问题标签 [test-coverage]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
3 回答
61378 浏览

maven - Line 和 Branch 覆盖之间的差异

我将 Cobertura Maven 插件用于我的一个项目。但我对生成的报告有疑问:

线路覆盖率和分支覆盖率有什么区别?

0 投票
3 回答
24254 浏览

maven - Intellij Idea:查看 Maven 项目的测试覆盖率

有没有办法在根 pom 中运行所有测试并在 Intellij Idea 中收集测试覆盖率?

0 投票
2 回答
3137 浏览

android - gcov 在 Android AOSP 中使用时无法打开源文件

我有以下 AOSP 项目设置

1)我在(AOSP根目录)/vendor/myProject/test.cpp中有test.cpp

2) 在 Android.mk 中,我使用了 LOCAL_CFLAGS += -g -fprofile-arcs -ftest-coverage LOCAL_LDFLAGS += -lgcov

3)当我编译代码时,我得到 test.gcno 在:(AOSP 根目录)/out/target/product/generic/obj/EXECUTABLES/myProject_intermediates

4)然后我在设备上进行测试(adb sync)

5)然后在设备上我使用了以下内容: export GCOV_PREFIX=/vendor
export GCOV_PREFIX_STRIP=13 (去除不必要的路径)

6)我运行测试 ./system/bin/test 并在设备(shell)/vendor/test.gcda 上获得 test.gcda 文件

7)我将 test.gcda(从设备)复制到我已经有 test.gcno 的构建目录(/out/target/product/generic/obj/EXECUTABLES/myProject_intermediates)

8)现在我在 /out/target/product/generic/obj/EXECUTABLES/myProject_intermediates 然后运行 ​​gcov 如下:

(AOSP根目录)/prebuilt/linux-x86/toolchain/arm-eabi-4.4.3/bin/arm-eabi-gcov test

为此,我得到如下输出:

文件 'vendor/myProject/test.cpp' 执行的行数:23.00% of 223

供应商/myProject/test.cpp:创建“test.cpp.gcov”

vendor/myProject/test.cpp: 无法打开源文件

任何人都可以帮助我解决这个问题。它说test.cpp:cannot open source file gcov 没有生成完整的报告。我还通过指定源路径来检查 -b 选项,如下所示:

(AOSP根目录)/prebuilt/linux-x86/toolchain/arm-eabi-4.4.3/bin/arm-eabi-gcov -b (AOSP根目录)/vendor/myProject test

它没有用。

我猜这个问题是因为不同目录中的分布式文件(gcno,gcda,test.cpp)。

谢谢

0 投票
1 回答
2418 浏览

maven - Sonar:在不同项目中进行集成测试时测量代码覆盖率

具有以下 Maven 项目结构:

我们今天要做的:

  • 在 module1 中运行mvn sonar:sonar,它会显示来自 Sonar 仪表板中单元测试的代码覆盖率。
  • 在 module1 上运行mvn jetty:run,然后立即在module1-itests 上运行mvn test来测试它。

我知道这远非理想情况......它更像是一个中间步骤,而我们试图改进一个几乎没有测试的遗留项目......


我的问题是:通过在 Sonar 的 module1 仪表板中执行集成测试来完成代码覆盖率的最佳方法是什么?

最初,我倾向于将 module1-itest 中的代码移动到 module1,并使用 Failsafe 插件和与 JaCoCo 的有据可查的集成来运行它们。这样,Module1 将混合 JUnit 单元测试和 TestNG 集成测试,每个组分别由 Surefire 和 Failsafe 运行,在预集成阶段启动 Jetty 服务器。

但是,我们有理由将两个项目分开,所以我想知道:

  1. 上面的方法是一个好的方法吗?
  2. 有没有其他推荐的方法可以让两个项目分开,但包括 module1 Sonar 仪表板中 module1-itest 完成代码覆盖

谢谢,

0 投票
1 回答
452 浏览

android - 艾玛:“无事可做:在任何数据文件中都找不到元数据”

我正在尝试在 Android 中使用 emma 代码覆盖率。除了创建coverage.em 之外,一切都运行良好——它没有被创建。我试图寻找它(在虚拟设备以及测试和应用文件夹中),但我找不到它。

我一直在寻找任何其他解决方案,但没有发现任何适合我的解决方案。

谢谢大家...

编辑:现在它生成coverage.em,但它说(使用详细模式):“合并的覆盖数据包含0个条目”并且报告为0%。怎么了?

0 投票
1 回答
535 浏览

python - 在 python 中显示覆盖率的命令行选项

当我从终端使用鼻子显示覆盖范围的测试结果时,我得到错误和缺失的行,这些行实际上被覆盖了

$ python -m nose.core test_utils.py -s --with-coverage

怎么找不到test_utils?我站在同一个目录下!

0 投票
4 回答
5628 浏览

xcode - XCode 5.1 单元测试覆盖分析在使用块的文件上失败

今天我的任务是在我们的代码库中添加单元测试覆盖分析。今天也是 iOS 7.1 与 XCode 5.1 一起发布的日子。从发行说明:

重新实现了用于代码覆盖测试的 gcov 工具。新版本使用来自 LLVM 项目的 llvm-cov 工具。它在功能上等同于旧版本的所有重要特性。Xcode 中 gcov 的位置也移动了,使用 xcrun 调用它。如果您发现问题,请提交错误报告。对于此版本,您仍然可以使用来自 GCC 的旧版本 gcov,它以 gcov-4.2 的形式提供。11919694 更新

我只是在阅读了几篇指导性 博客 文章后才意识到这一点,正确设置了我的环境-在测试时在模拟器的构建文件夹中生成 .gcda/.gcno 文件-并让此处的报告生成工具尝试将它们解析为报告。(这是一个 ./getcov 脚本,它收集您的环境变量以传递给 lcov-1.10 脚本以生成报告)

第一个障碍是新的捆绑gcov程序不支持获取版本的参数,这是初始化-v的第一步。lcov似乎已经不是初学者了,但是阅读上面的发行说明,我修改了lcov脚本以使用旧gcov-4.2版本并解决了这个问题。

但是,lcov在处理我的覆盖数据文件时很早就出错了。这会生成一个报告,其中可能包含我项目中按字母顺序排列的前 10 个左右的文件。不是特别有用。错误输出也很小且无济于事:

geninfo: 错误: (build_artifacts)/(class_that_errored).gcda 的 GCOV 失败!

我修改了lcov脚本以打印它得到的错误(11不幸的是,它只产生了,在 gcov(-io).c 代码中找不到任何引用)并继续操作而不是退出,所以我留下了更多报告中的文件,但仍然可能有 85% 的源文件如上所述错误。

在报告中成功结束的文件和引发错误的文件之间,我能辨别的唯一模式是任何使用内联块声明的文件都失败了。没有以任何方式通过使用块的文件,并且我检查过的所有失败的文件都包含块。奇怪的。

然后我发现我可以打开CoverStory中的各个 .gcda 文件,包括那些在lcov脚本中出错的文件。在覆盖率报告下方的消息窗口中,所有出错的文件都有警告消息:

(class_that_errored).gcno: '__copy_helper_block_' 没有行

(class_that_errored).gcno: '__destroy_helper_block_' 没有行

在这一点上,我最好的假设是新的 XCode 5.1 正在生成旧gcov-4.2程序无法处理有关块声明的 .gcda 文件。

但是我已经用尽了所有我能想到的尝试,所以我在这里询问是否有人有我错过的知识,或者有任何想法来进一步调试工作。或者,如果自从今天的 XCode 5.1 更新后,有人成功地测量了测试覆盖率gcov,我也很想听听您必须做出的任何更改。

0 投票
1 回答
2105 浏览

node.js - Coveralls.io with Travis-CI

I have several open-source projects that use Travis-CI to check the build status on my commits. I also report my test coverage to Coveralls.io. In the past few weeks, the reliability of coveralls has been spotty at best, and I had my tests running the coverage stuff, but they would fail the build because the coveralls api was returning a 503 error.

In response to this, I moved my coverage stuff to an after_success script in my .travis.yml, but now it seems that it's not sending the info to Coveralls.io. Am I approaching this the wrong way? Has anyone else run into this issue?

Here are some more details on the projects I'm running into issues with:

  • all of them are node modules
  • all of them are tested using mocha
  • all of them have test coverage using istanbul
  • I am using the node-coveralls module to report coverage reports to coveralls.io

If more information is needed, please let me know.

UPDATE:

Now it seems to be reporting correctly to coveralls, but it's only reporting 50%. Any additional help would be much appreciated

0 投票
1 回答
223 浏览

c# - 单元测试覆盖率正在迂腐

我正在使用Visual Studio 2012中的分析代码覆盖率工具。该报告似乎对所涵盖的内容非常迂腐,我不知道还能做些什么来提供更多的报道。

我正在测试的代码是这样的:

单元测试:

该报告声称,上述评论仅涵盖部分内容。我可能无法在这条线上测试什么?

0 投票
1 回答
1096 浏览

scala - Scala:在单独模块中进行测试的项目的代码覆盖率

由于各种管理原因,我们的项目具有以下结构:

这个想法是所有测试都在一个单独的模块中。

问题:我可以使用什么插件来获得准确的测试覆盖率?