我试图按照Roy Osherove's UnitTests naming convention的命名模板:[MethodName_StateUnderTest_ExpectedBehavior]。命名单元测试,只是调用构造函数?
遵循此模式。你会如何命名一个调用构造函数的测试?
[Test]
public void ????()
{
var product = new Product();
Assert.That(product, Is.Not.Null);
}
我试图按照Roy Osherove's UnitTests naming convention的命名模板:[MethodName_StateUnderTest_ExpectedBehavior]。命名单元测试,只是调用构造函数?
遵循此模式。你会如何命名一个调用构造函数的测试?
[Test]
public void ????()
{
var product = new Product();
Assert.That(product, Is.Not.Null);
}
Constructor_WithoutArguments_Succeeds
我不知道你会怎么称呼这个单元测试,但我强烈建议你避免编写它没有什么地球上做出断言失败。如果构造函数成功,CLR会保证您的新实例不会为空。
现在,如果你的对象的构造函数抛出在某些情况下例外,你能说出这样的:
[TestMethod]
[ExpectedException(typeof(ArgumentNullException))]
public void Product_Constructor_ShouldThrowIfNullArgumentSupplied()
{
new Product(null);
}
所以两个用于代码可能的情况下,你正在测试:
不需要tes第一个。
Fair ......看到你的观点,但你没有回答这个问题。您的名字与命名模板不匹配(产品不是方法)。所以,如果我把它留下来,你将它命名为Constructor _ ???? _ ShouldThrowIfNullArgumentSupplied。 如果您先测试,那么问题是否有效,然后您需要从某处开始。我经常有一个没有行为的班级,这可能会失败。例如。 : class产品() { string Name {get;设置;} } – 2010-05-15 17:34:23
那么你会发现这个命名约定有一个弱点:-) – 2010-05-15 17:40:02
:-)这就是我问这个问题的原因。如果你遵循这个命名约定,那么你如何命名这样的测试。现在我认为你是对的...不要写任何测试,并允许不可能失败的实体。我不是很喜欢测试,我正试着学习如何做“先测试”。那么你将如何为我的一个dum实体编写一个测试。 – 2010-05-15 18:16:00