5

默认情况下,kcov 在其代码覆盖结果中包含所有源文件,包括测试函数。这会扭曲报告的覆盖率。如何告诉 kcov 排除测试功能?

例如:

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

kcov 报告 的覆盖率数据foo,但我想排除它。

4

1 回答 1

8

将您的测试代码放在不同的文件中并使用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 中排除测试。)

于 2017-02-24T15:19:51.787 回答