默认情况下,kcov 在其代码覆盖率结果中包含所有源文件,包括测试函数。这扭曲了报告的覆盖率。我如何告诉 kcov 排除测试函数?
例如:
#[test]
fn foo() {
...
}
kcov 报告了 foo
的覆盖率数据,但我想排除它。
最佳答案
将测试代码放在不同的文件中并使用 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 中的测试。)
关于rust - 使用 kcov 时如何从代码覆盖中排除测试函数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42440192/