2010-05-15 59 views

回答

9

Constructor_WithoutArguments_Succeeds

7

我不知道你会怎么称呼这个单元测试,但我强烈建议你避免编写它没有什么地球上做出断言失败。如果构造函数成功,CLR会保证您的新实例不会为空。

现在,如果你的对象的构造函数抛出在某些情况下例外,你能说出这样的:

[TestMethod] 
[ExpectedException(typeof(ArgumentNullException))] 
public void Product_Constructor_ShouldThrowIfNullArgumentSupplied() 
{ 
    new Product(null); 
} 

所以两个用于代码可能的情况下,你正在测试:

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

不需要tes第一个。

+1

Fair ......看到你的观点,但你没有回答这个问题。您的名字与命名模板不匹配(产品不是方法)。所以,如果我把它留下来,你将它命名为Constructor _ ???? _ ShouldThrowIfNullArgumentSupplied。 如果您先测试,那么问题是否有效,然后您需要从某处开始。我经常有一个没有行为的班级,这可能会失败。例如。 : class产品() { string Name {get;设置;} } – 2010-05-15 17:34:23

+0

那么你会发现这个命名约定有一个弱点:-) – 2010-05-15 17:40:02

+0

:-)这就是我问这个问题的原因。如果你遵循这个命名约定,那么你如何命名这样的测试。现在我认为你是对的...不要写任何测试,并允许不可能失败的实体。我不是很喜欢测试,我正试着学习如何做“先测试”。那么你将如何为我的一个dum实体编写一个测试。 – 2010-05-15 18:16:00

相关问题