2010-05-15 51 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

相關問題