当我尝试测试我的课时,我得到NullReferenceException,我不明白为什么? Exeption连接到: o1.Products.Add 。 当我尝试删除它时,一切都很好。
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);
}
}
答案 0 :(得分:0)
这是因为Products
从未实例化,因此它是null
- 您正在调用null.Add(p1)
,这是一个空引用。
要修复它,您可以创建一个Order
构造函数并在那里实例化Products
。
public class Order
{
public List<Product> Products { get; set; }
public Order() {
this.Products = new List<Product>();
}
}