首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >我怎样才能得到货物测试的保险?

我怎样才能得到货物测试的保险?
EN

Stack Overflow用户
提问于 2021-10-08 06:50:21
回答 1查看 1.2K关注 0票数 5

当我想测试C++覆盖率时,我可以用-fprofile-arcs -ftest-coverage构建我的程序,运行所有测试,并运行gcov以获得覆盖范围。

然而,说到铁锈,我完全迷失了方向。我想要做的是运行以下测试(在我的Mac上),并获得路径components/raftstore中所有锈蚀代码的覆盖率

代码语言:javascript
复制
cargo test --package tests --test failpoints cases::test_normal
cargo test --package tests --test failpoints cases::test_bootstrap
cargo test --package tests --test failpoints cases::test_compact_log

这个职位中,它说首先运行cargo test --no-run,然后运行kcov。然而,当我这样做的时候,kcov就会永远阻塞。

然后我是找到一个叫做 cargo kcov,他提供--test。但是,当我像在cargo kcov --test failpoints cases::test_normal中一样运行cargo test时,会出现错误

代码语言:javascript
复制
error: cargo subcommand failure
note: cargo test exited with code exit status: 101
error: no test target named `failpoints`

我已经尝试了很多方法来解决这个问题,但是,这些方法都没有用,所以我想知道我能否在这里得到一些帮助。

我知道还有其他的覆盖工具,如tarpaulingrcov,我目前正在尝试这些工具。如果使用这些覆盖工具有简洁的解决方案,也是可以接受的。,但是,我仍然想知道kcovcargo-kcov到底出了什么问题。

EN

回答 1

Stack Overflow用户

发布于 2022-11-04 12:16:07

根据锈蚀文档的说法,现在可以获得基于检测的代码覆盖率。

下面的命令生成覆盖率结果。注意,它需要锈蚀分析器运行时,默认情况下它包括在nightly中。

代码语言:javascript
复制
RUSTFLAGS="-C instrument-coverage" \
    cargo test --tests

这些结果可能包括损坏的符号名,这些名称可以与铁锈一起使用。

代码语言:javascript
复制
cargo install rustfilt

在使用此设置运行测试之后,应该有一个或多个.profraw文件。如果有多个,则可以将它们合并:

代码语言:javascript
复制
$ llvm-profdata merge -sparse default_*.profraw -o your_crate.profdata

然后可以用cov cov显示覆盖率信息,例如,如本节中所描述的(替换机箱和测试二进制文件的名称)。

如果rustc和的LLVM版本重新部署,可能会出现问题。正如这里所指出的,llvm cov不匹配。

这个答案基于生锈书的这一节,它提供了关于代码覆盖率的更多信息。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/69491669

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档