2013-05-08 43 views
2

我有一個小問題。(在單元測試) - 我單元測試方法引發異常的類。 結構是:如何達到完整的CodeCoverage?通過異常免費塊

public bool DoA() 
    { 
     ThrowException(); 
     return true; 
    } 

    public void DoB() 
    { 
     ThrowException(); 
    } 

    private static void ThrowException() 
    { 
     throw new NotSupportedException(); 
    } 

從代碼覆蓋率的結果是不是100% - return語句和從的DoA(右大括號),並從你的右大括號()B不是所述代碼覆蓋率下(因爲他們沒有達到)。 我知道,這對單元測試並不重要,因爲我仍然檢查了功能,但僅限於我 - 它可能以及如何達到完整的CodeCoverage? 也許通過排除? (可能更改測試代碼/程序代碼)

+3

的代碼是不可達的,因爲100%的時間你拋出一個異常 - 你怎麼能指望你什麼時候能得到100%的代碼完成做這個?你根本做不到。 – 2013-05-08 11:22:53

+1

這就是我所期望的 - - 希望去世... – basti 2013-05-14 09:28:05

回答

5

這裏無法獲得全面覆蓋。 throw之後的所有內容都是無效代碼。此外,代碼(行)覆蓋率不是測試中的聖盃。是的,這很重要,但它不是最終的標準。

+0

謝謝,我知道那不是聖盃 - 對我來說不是,但有時爲頭;) – basti 2013-05-14 09:35:22

6

您無法獲得您的代碼的真實部分,因此您可以將其刪除。在您的項目中存在無法訪問的代碼是很糟糕的。或者是因爲功能的DoA()還沒有完成,你可以使用:[ExcludeFromCodeCoverage]

[ExcludeFromCodeCoverage] 
public bool DoA() 
{ 
    ThrowException(); 
    return true; 
} 
+0

謝謝,我仍然知道這屬於,但它只是覆蓋完整的方法 - 不是單行;)。 - 看起來我必須在這種情況下放棄完整的codeCoverage。 – basti 2013-05-14 09:31:30