我在Visual Studio 2012中有一个Windows类库项目,我正在尝试测试默认构造函数。
我的构造函数是:
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
}
我只是想测试是否调用构造函数。
答案 0 :(得分: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...
}
答案 1 :(得分:3)
你可能会测试一些事情:
Items.Count
是2; 所以,也许是这样的:
[TestMethod]
public void GetForm()
{
Form frm = new Form();
Assert.AreEqual(2, frm.Items.Count);
Assert.AreEqual("User ID", frm.Items[0].Text);
...
}
您想要测试您可能设置的所有属性,上面的代码只是一个大纲。
答案 2 :(得分:2)
我会说你可以很好地测试构造函数,但由于代码中没有业务逻辑,所以没有任何意义。如果您只考虑代码覆盖率,则可以声明Items集合包含两个项目。至少你会确保没有人篡改你的构造函数:)
Assert.AreEqual(2,frm.Items.Count);