java - 我的 gradle 多项目 + java + groovy + clover + sonarqube 无法在 Sonar 中达到 100% 代码覆盖率

标签 java gradle groovy sonarqube code-coverage

我创建了一个包含源、测试和配置的简单场景。我当前的设置无法在 Sonar 中达到 100% 的代码覆盖率,即使它应该是这样。 (链接到具有来源的存储库 - https://bitbucket.org/sloukam/gradle-multiproject-coverage-sonar/src )

  • 这有点复杂 - 它是 Gradle 多项目,在 java 和 groovy 中混合源代码和测试。
  • 测试与源类位于同一模块中,有时测试位于“通用”测试模块中(我们称之为集成测试模块),相应的源位于其模块中(在这个简单的情况下位于模块 source_module_one 和 source_module_two 中。
  • 某些源代码是用 Java 编写的并由 Groovy 测试覆盖,反之亦然。

花了很多时间后,我无法在本地 Sonar 中看到 100% 的代码覆盖率。我非常感谢帮助实现 100% 代码覆盖率的目标。我的项目结构可以吗?使用任何其他覆盖率插件吗?

最佳答案

首先,您当然应该重新考虑将测试与源放在同一目录中。为了将来的理智起见,我将测试隔离在不同的目录中。此外,如果您的测试与源文件一起存在,那么它们将被计为源文件。因此,您需要对您的测试进行测试,并测试您的测试测试,......无穷无尽。

除此之外,100% 的覆盖率也是一项 chalice 任务。对自己要求高标准是一件好事,但到了一定程度,你就会遇到 yield 递减规律。相反,我会将要求设置为... 90%? 92%? 95%?

关于java - 我的 gradle 多项目 + java + groovy + clover + sonarqube 无法在 Sonar 中达到 100% 代码覆盖率,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44202761/

相关文章:

java - 将字符串传递给函数

java.io.IOException : The system cannot find the file specified

groovy - 什么是过早离开常规脚本的最佳方法(system.exit(0)除外)

groovy - 以相反的顺序从 Groovy 的 eachFile() 返回文件列表

android-studio - Android : Could not find aapt2-proto. jar 上的 flutter 错误

groovy - Gradle 命令行 Exec 不工作

java - Eclipse:工作区中的所有项目开始给出“内部错误发生期间: "Validating XXXX"NullPointer 异常”

java - org.hibernate.hql.internal.ast.QuerySyntaxException 无效路径

android - 预期 org.gradle.api.artifacts.result.ResolvedDependencyResult 但找到 org.gradle.api.internal.artifacts.result.DefaultUnresolvedDependencyResult

Gradle 在扩展上调用构造函数