命名单元测试只调用构造函数?

Tho*_*sen 5 unit-testing naming

我正在尝试遵循Roy Osherove的UnitTests命名约定,使用命名模板:[MethodName_StateUnderTest_ExpectedBehavior].

遵循这种模式.你如何命名一个调用构造函数的测试?

[Test]
public void ????()
{
    var product = new Product();
    Assert.That(product, Is.Not.Null);
}
Run Code Online (Sandbox Code Playgroud)

ndp*_*ndp 12

Constructor_WithoutArguments_Succeeds


Dar*_*rov 7

我不知道你怎么称呼这个单元测试,但我强烈建议你不要写它,因为地球上什么都没有让断言失败.如果构造函数成功,CLR会保证一个不为null的新实例.

现在,如果对象的构造函数在某些情况下抛出异常,您可以这样命名:

[TestMethod]
[ExpectedException(typeof(ArgumentNullException))]
public void Product_Constructor_ShouldThrowIfNullArgumentSupplied()
{
    new Product(null);
}
Run Code Online (Sandbox Code Playgroud)

因此,您正在测试的代码有两种可能的情况:

  1. 你得到一个实例
  2. 你得到一个例外

无需先测试.