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.