2013-11-26 33 views
1

我在VS 2012中有一個Windows類庫項目,我嘗試測試一個默認的構造函數。如何在.NET中使用c#測試默認的構造函數類?

我的構造函數是

public Form() 
    { 
     Items = new List<IFormItem>(); 
     Items.Add(new FormItem()); 
     Items[0].Type = ItemTypes.TextBox; 
     Items[0].Text = "User ID"; 
     Items[0].X = 100; 
     Items[0].Y = 100; 
     Items[0].Height = 30; 
     Items[0].Width = 100; 
     Items.Add(new FormItem()); 
     Items[1].Type = ItemTypes.Button; 
     Items[1].Text = "Log In"; 
     Items[1].X = 130; 
     Items[1].Y = 170; 
     Items[1].Height = 30; 
     Items[1].Width = 70; 
    } 

我將如何測試這個

[TestMethod] 
    public void GetForm() 
    { 
     Form frm = new Form(); 

     //what to write here 
    } 

我只是想測試一下構造函數調用或不

+1

你想測試什麼? –

+0

你不應該測試構造函數,因爲它們並不包含任何邏輯。 – wudzik

+0

@ØyvindKnobloch-Bråthen是的,知識將會有很大的幫助,因爲如果你不知道你想要測試什麼, – Tafari

回答

3

試試這個:

[TestMethod] 
public void GetForm() 
{ 
    Form frm = new Form(); // the constructor is called here, this is your ACT 

    var expectedNumberOfItems = 2; 
    var expectedType = ItemTypes.Button; 

    Assert.AreEqual(expectedNumberOfItems, frm.Items.Count, "frm.Items.Count"); 

    Assert.AreEqual(expectedType, frm.Items[0].Type, "frm.Items[0].Type"); 
    // etc... 
} 
3

你將會是proba布萊考幾件事情:

  1. Items.Count爲2;
  2. 而且值是你所期望的。

所以,也許是這樣的:

[TestMethod] 
public void GetForm() 
{ 
    Form frm = new Form(); 

    Assert.AreEqual(2, frm.Items.Count); 
    Assert.AreEqual("User ID", frm.Items[0].Text); 
    ... 
} 

你想要測試所有你可能設置的屬性,上面的代碼只是一個輪廓。

2

我要說的是,你很可能測試的構造,但是,因爲在你的代碼中有沒有業務邏輯實在是沒有意義的。如果您只是在考慮代碼覆蓋率,則可以斷言Items集合包含兩個項目。至少你會確保沒有人篡改你的構造函數:)

Assert.AreEqual(2,frm.Items.Count);