xUnit 测试说 System.NullReferenceException
xUnit Testing says System.NullReferenceException
美好的一天,
我是 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;
}
}
}
提前致谢。
事实不必先于理论运行。
您的设置必须是您的构造函数。如果您将设置函数更改为构造函数,您的空引用异常问题将得到解决
public UnitTest1()
{
calculateDiscount = new CalculateDiscount();
}
我猜你对 XUnit 和 NUnit 感到困惑。
NUnit 提供了一个 SetUp
Fixture 来初始化您可以重复使用的变量。
目前,XUnit 还没有。但是有workarounds.
美好的一天,
我是 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;
}
}
}
提前致谢。
事实不必先于理论运行。
您的设置必须是您的构造函数。如果您将设置函数更改为构造函数,您的空引用异常问题将得到解决
public UnitTest1()
{
calculateDiscount = new CalculateDiscount();
}
我猜你对 XUnit 和 NUnit 感到困惑。
NUnit 提供了一个 SetUp
Fixture 来初始化您可以重复使用的变量。
目前,XUnit 还没有。但是有workarounds.