【问题标题】:How do I exclude test functions from code coverage when using kcov?使用 kcov 时如何将测试函数排除在代码覆盖范围之外?
【发布时间】:2017-02-24 13:43:33
【问题描述】:

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

例如:

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

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

【问题讨论】:

  • 请提供有关您如何调用 kcov 的更多信息。

标签: rust kcov


【解决方案1】:

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

【讨论】:

    猜你喜欢
    • 2013-01-05
    • 2019-09-24
    • 2014-07-27
    • 2016-03-29
    • 2011-04-07
    • 1970-01-01
    • 2021-02-13
    • 2021-05-28
    • 2017-11-11
    相关资源
    最近更新 更多