2015-06-19 63 views
1

我有一個測試類,它有一堆測試用例。我怎樣才能獲得代碼覆蓋率在Java中的單個測試

我想測量課堂上單個測試用例的覆蓋範圍。

有沒有什麼辦法可以得到一個報告來映射測試用例和覆蓋率。

+0

你想測量什麼,確切地說?每個單獨測試涵蓋的整個生產代碼庫的百分比? (但是,那是什麼意思?)或者是其他的東西? –

+0

我想知道prod代碼庫中單個測試用例所涵蓋的類或方法。我的目的不是衡量覆蓋面。 –

+0

您可以始終運行單個測試用例,然後檢查由其生成的覆蓋率報告。但是可能你會想要一次運行整個測試套件。據我所知,現有的用於Java的代碼覆蓋工具沒有提供現成的這種功能(Ira的答案的解決方案似乎需要來自用戶的一些編碼,所以我不計算它)。我並不真正瞭解這個需求,所以我不能說這個功能是否值得在一個工具中使用。 –

回答

-1

你試過三葉草Clover

我知道這不是免費的,但它應該給你你需要什麼。

0

我們SD Java Test Coverage工具可以給你這個數據。

此工具增加了一類特殊的TCV與測試方法的程序:

TCV.reset(); // resets the test coverage vector 
    TCV.dump(); // writes vector to file 
    TCV.setBaseName(String); // record vector file name prefix 

如果在應用程序調用轉儲功能,測試覆蓋率矢量轉儲到以當前日期和時間以及指定的文件提供的BaseName。

您可以使用這些修改測試執行框架,不管是什麼,只要稍微獲得特定的測試向量。你在哪裏都調用第N個測試用例,添加通話轉儲:

TCV.reset(); // marks everything as "not executed" 
    tests.nthTestCase(); 
    TCV.setBaseName("nthTestCase"); 
    TCV.dump(); 

這將產生覆蓋只是由nTestCase執行的代碼時間標記載體。

個別測試案例的結果可以發現,通過該工具的UI組件顯示。 UI組件還可以將所有這些單獨的測試用例覆蓋率結果組合到一個總體測試覆蓋率結果中,以提供傳統的「所有測試用例執行的所有內容」結果。或者,你可以比較測試用例覆蓋結果,看看哪些測試用例覆蓋相同的代碼,以幫助消除多餘的測試用例等

的UI組件還可以產生被測試覆蓋的行的報告;這可以編寫腳本,因此可以爲單獨收集的所有測試覆蓋矢量生成一個包含行的報告。

+0

謝謝,但我不在Windows上 –

+0

嗯。那麼,你可以在Wine上運行該工具的工具部分(這是經過很好測試的);您可以使用產品提供的shell腳本執行此操作。該工具的其餘部分是基於Java的,並將在Linux上運行。 –

相關問題