2017-02-24 57 views
2

默認情況下,kcov在其代碼覆蓋率結果中包含所有源文件,包括測試函數。這扭曲了報道的覆蓋率。我如何告訴kcov排除測試功能?使用kcov時,如何從代碼覆蓋率中排除測試函數?

例如:

#[test] 
fn foo() { 
    ... 
} 

kcov報告覆蓋數據foo,但我想將它排除在外。

+0

請提供更多關於如何調用kcov的信息。 –

回答

5

在不同的文件在您的測試代碼,並使用kcov參數--exclude-path=./test(用於集成測試)或--exclude-pattern=_test.rs(如果您將所有的試驗foo.rs到foo_test.rs)。

另一種方法是使用kcov參數--exclude-region='#[cfg(test)]:#[cfg(testkcovstopmarker)]',並確保每個文件要麼只有在最後的測試,沒有它後面的非測試代碼或必要的未使用的定義,增加了停車標誌#[cfg(testkcovstopmarker)]它做rustc後快樂。 (kcov找到一行中任意位置區域的開始和結束字符串。)

(也可以根據它們包含的字符串排除行,但這對於排除Rust中的測試無效。)

相關問題