繁体   English   中英

如何在.net中使用C#对默认构造函数类进行单元测试?

[英]How to unit test a default constructor class using C# in .net?

我在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
    }

我只想测试构造函数是否被调用。

尝试这个:

[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. 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);
    ...
}

您可能想测试所有可能设置的属性,上面的代码只是概述。

我会说您可以很好地测试构造函数,但是由于代码中没有业务逻辑,因此确实没有意义。 如果您只是在考虑代码覆盖率,则可以断言Items集合包含两个项目。 至少您将确保没有人篡改您的构造函数:)

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM