2016-12-29 7 views
-1

私はクラスをテストしようとするとNullReferenceExceptionを受け取りますが、なぜ私は考えていませんか? Exeptionは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

それはnullあるのでProductsは、インスタンス化されることはありませんので、これは起こる - あなたはヌル参照あるnull.Add(p1)を呼んでいます。

これを修正するには、Orderコンストラクタを作成し、そこでProductsをインスタンス化することができます。

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

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

Downvoter:なぜこの回答が下落しましたか?それは質問と同時に票決されたようだ。質問が悪い質問であると感じたら、必ずしも私の答えが悪い答えであるとは限りません。自分のメリットに答えて投票してください。 –

+0

ありがとう!本当に素晴らしい答えです! –