xUnit测试说System.NullReferenceException

时间:2018-03-27 05:37:21

标签: c# unit-testing xunit xunit.net

美好的一天,

我在xUnit中遇到了问题我正面临这样的错误:“System.NullReferenceException : Object reference not set to an instance of an object.

这是我的代码,它根据季节测试rulename。

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;
        }
    }
}

提前谢谢。

2 个答案:

答案 0 :(得分:1)

事实上不必在理论之前运行。

您的设置必须是您的构造函数。如果您将设置函数更改为构造函数,则会解决空引用异常问题

public UnitTest1()
{
    calculateDiscount = new CalculateDiscount();
}

答案 1 :(得分:0)

我猜你和XUnit和NUnit混淆了。

NUnit提供SetUp Fixture来初始化可以重复使用的变量。

截至目前,XUnit还没有。但有workarounds