2010-07-20 22 views
2

我有幾個單元測試助手擴展方法,例如我也寫過單元測試的IsNotEmpty(this string str)。這些測試的基本結構是我有一個測試,用於驗證擴展方法是否通過並在「好」輸入上返回預期結果,並驗證是否在「壞」輸入上引發了失敗異常。例如,對於上述方法的測試失敗可能是這樣的:針對故意失敗測試的NCover代碼覆蓋率結果

[TestMethod, Fails] 
public void IsNotEmpty_Fails_On_Empty_String() 
{ 
    "".IsNotEmpty(); 
} 

其中Fails是我寫我自己的屬性 - 基本上爲[ExpectedException(typeof(AssertFailedException))]的代理。所以我明確預計上述測試中唯一的一個例外,因此,我是而不是期望該方法一直運行。

但是當我右鍵點擊我的解決方案時,選擇「Test with-> NCover」,在上述所有方法中,我得到的代碼覆蓋率小於100%,末尾大括號突出顯示爲紅色。

爲什麼NCover抱怨我的測試方法沒有完成,當我說它不會?

**)對於所有那些會回覆100%代碼覆蓋率沒有必要的人:不,我並不特別擔心無論如何都要維護100%的代碼覆蓋率。但是,在這些情況下,* do 問題的方法顯示爲不在列表中,並且我必須一直進入樹中才能看到它只是它們。這就是我試圖在這裏得到的問題 - 一般不是100%的代碼覆蓋率。

回答

5

您是否正在運行調試版本?這可能是問題。 NCover在調試斷點之外工作,Microsoft向每個方法的閉括號添加一個,以便在離開該方法之前它可以在那裏執行。在發佈模式下運行應該照顧那些右括號。

+0

好搭檔!更改構建遷移到發佈修復它=) – 2010-07-23 06:22:28

+0

我遇到了與dotCover相同的問題。 – heymega 2016-03-24 14:53:27

-1

不要擔心100%的代碼覆蓋率。儘可能接近你的合理範圍。

實現100%的代碼覆蓋率是浪費時間。

重要的是,您對覆蓋需要覆蓋的代碼的測試充滿信心。

您可以擁有一套完整的測試,只覆蓋70%的代碼。

你最好的測試可能只包含幾行內容,但它們會阻止大多數錯誤。他們是'邊緣案例測試'。沒有它們的那些,其他測試是沒用的。您的整個測試套件都是無用的,因爲它們是測試錯誤的案例,如果它們不存在,它們通常會不斷重新引入代碼庫。

+0

我不*一般*擔心100%的代碼覆蓋率,但它很煩人看到所有這些紅色(或忽略 - 是的,我知道關於該選項)的事情,只是因爲NCover不會過去測試方法的最後一個大括號。 – 2010-07-20 19:38:33

+0

有關我的推理的更多詳細信息,請參閱我的編輯。 – 2010-07-20 19:40:55

+0

@Tomas Lycken,是啊,這很煩人,這就是爲什麼我不再檢查我的代碼覆蓋率。我試圖遵循TDD,知道我的所有代碼都會被覆蓋,無論這些工具報告什麼。 – CaffGeek 2010-07-20 19:46:51

相關問題