代码之家  ›  专栏  ›  技术社区  ›  jsonGPPD

xUnit测试系统。NullReferenceException

  •  -2
  • jsonGPPD  · 技术社区  · 8 年前

    早上好,

    我是xUnit的begginer,我面临的错误是,“ 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;
            }
        }
    }
    

    提前谢谢你。

    2 回复  |  直到 8 年前
        1
  •  1
  •   Adem Catamak    8 年前

    事实不必先于理论。

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

    public UnitTest1()
    {
        calculateDiscount = new CalculateDiscount();
    }
    
        2
  •  0
  •   KaeL    8 年前

    我想你是把XUnit和NUnit弄糊涂了。

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

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