【发布时间】:2018-03-27 13:54:17
【问题描述】:
早安,
我是 xUnit 的初学者,我遇到了这个错误,上面写着“System.NullReferenceException : Object reference not set to an instance of an object.”
这是我的代码,它测试规则名称是否取决于季节。
public class UnitTest1
{
private CalculateDiscount calculateDiscount;
[Fact]
public void Setup()
{
calculateDiscount = new CalculateDiscount();
}
[Theory]
[InlineData(10.00, "Summer", 100.00)]
public void WhenRuleName_Is_Summer_Return_Valid(decimal amount, string ruleName, decimal expected)
{
var result = calculateDiscount.CalculateDiscountSalary(amount, ruleName);
Assert.Equal(expected, result);
}
}
这是我的实际实现
public class CalculateDiscount
{
public decimal CalculateDiscountSalary(decimal amount, string ruleName)
{
if (ruleName.Equals("Summer"))
{
return amount * 10.00M;
}
else if (ruleName.Equals("Winter"))
{
return amount * 15.00M;
}
else
{
return amount * 20.00M;
}
}
}
提前谢谢你。
【问题讨论】:
-
抛出的错误在哪里。我已经知道但想看看你是否可以从这个过程中学习如何调试。到目前为止,您尝试过什么来解决您的问题?
-
太好了,在那个方法中什么可能是空的?为什么?学习单步调试代码。
-
把断点放在
var的行上 -
哦,我使用
Debug Selected Test先生,但calculateDiscount为空。虽然所有参数都有一个值 -
当断点命中时,检查该点变量的状态
标签: c# unit-testing xunit xunit.net