2011-09-27 25 views
1

我有一個和DataBase交談的類。如何在不降低代碼覆蓋率的情況下忽略一些單元測試?

我有我的集成測試,它與Db對話並聲明相關更改。但是當我提交我的代碼時,我希望這些測試被忽略,因爲我不希望稍後自動調用它們。 (只是爲了開發時間我使用它們現在)

當我把[忽略]屬性,它們不叫,但代碼覆蓋率顯着減少。

有沒有辦法讓這些測試,但沒有他們的方式自動運行生成計算機上 這一事實,它們將被忽略不 不會影響代碼覆蓋率?

回答

0

無論你使用最有可能的代碼覆蓋工具具有某種CoverageIgnoreAttribute的或類似的規定(至少我用過的那些做),這樣你只需將是該會從這些單位,稱爲方法塊測試,你應該沒問題。

0

你的要求似乎沒有道理。代碼覆蓋率通過執行測試並記錄執行哪些語句/條件等來衡量。如果你禁用了你的測試,那麼沒有任何東西會被執行,你的代碼覆蓋率會下降

0

我不知道這是否適用於您的情況。但是我自發地想到了一個設置,其中有兩個解決方案文件(.sln),一個是單元/集成測試,另一個是沒有。這兩個解決方案共享相同的代碼和項目文件,但開發/測試解決方案包含您的單元測試(在編譯時構建並運行),另一個解決方案不包含。這兩種解決方案都應該在源代碼控制下,但只有沒有單元測試的解決方案才能由構建服務器構建。

這種設置不應該需要你改變現有的代碼(太多)。我寧願重寫代碼以適合您的測試設置。

0

TestNG擁有組,因此您可以指定只運行一些組,並自動將其他組用於其他組以外。你沒有指定你的單元測試框架,但它可能有類似的東西。

+0

這是如何涉及計算未運行測試的代碼covergate? – sll

+0

他不想讓他們打電話時他承諾,但他仍然希望他們計數。這可以防止它們被調用,但是它們不會被忽略,所以它們仍然會被用於代碼覆蓋。這是一個愚蠢的解決方法,但完成了我認爲他想要的。 – Sign

+0

你確定以這種方式代碼覆蓋率也不會改變嗎? (你的意思是測試將被計算爲基本測試計數或代碼覆蓋率的多少?) – sll

相關問題