2016-12-29 70 views
-1

当我尝试测试我的类时,得到NullReferenceException,我不知道为什么? 执行连接到:o1.Products.Add。 当我尝试删除它时,一切正常。单元测试 - 空参考Exc

public class Product 
{ 
    public string Name { get; set; } 
    public decimal Value { get; set; } 
} 

public class Order 
{ 
    public List<Product> Products { get; set; } 

    private decimal value { get; set; } 
    public decimal Value 
    { 
     get { return value; } 
     set 
     { 
      if (Products.Count == 0) 
       value = 0; 
      else 
       value = Products.Sum(x => Convert.ToInt32(x)); 
     } 
    } 
} 

[TestClass] 
public class Tests 
{ 
    [TestMethod] 
    public void OrderTest() 
    { 
     //Arrange 
     Product p1 = new Product(); 
     Order o1 = new Order(); 
     //Act 
     p1.Value = 10; 
     o1.Products.Add(p1); 
     //Assert 
     Assert.AreEqual(30, o1.Value); 
    } 
} 

回答

-1

这是因为Products从不实例化,所以它是null - 你在呼唤null.Add(p1),这是一个空引用

要修复它,您可以在那里创建Order构造函数并实例化Products

public class Order 
{ 
    public List<Product> Products { get; set; } 

    public Order() { 
     this.Products = new List<Product>(); 
    } 
} 
+0

downvoter:为什么这个答案downvoted?它似乎与问题同时降低了。如果你觉得这个问题是一个不好的问题,那并不一定意味着我的答案是一个不好的答案。请根据自己的优点投票回答。 –

+0

谢谢!这真是太棒了! –