【发布时间】:2019-10-30 14:37:41
【问题描述】:
我在 intellij 中有一个 gradle 项目(java)。我右键单击 intellij 中的项目并运行Run Tests in projectName with coverage,它在右侧创建了一些测试报告。在右手边,我有类似的数字
| Class, % | Method, % | Line, %
--------------------------------------
80%(80/100) 50%(100/200) 30%(30/100)
注意:以上数字仅为示例。这些不是真的。
现在我转到命令行并运行 gradlew jacocoTestReport,它为 Method 和 Line 提供了 different set of numbers,但 Class numbers were same。为什么在这种情况下会出现差异?
有没有办法从命令行而不是右键单击来运行 intellij 的代码覆盖率?
我只是想知道 Intellij 是否使用与 jacoco 不同的方法来计算这些数字。但即使在那种情况下,我的假设是只有一种计算方法,对吗?还是 intellij 或 jacoco 不计算具有 Lombok 注释等的类,从而减少最终计数中的方法(getter 和 setter)数量?
【问题讨论】:
-
分子和分母与方法和线有何不同?您可以轻松检查 IntelliJ 的方法和行。我不知道雅可可。我相信 IntelliJ。我已经看到了由于必须明确告知 SonarCube 等其他代码覆盖工具从统计数据中排除测试类这一事实造成的差异。
-
我的问题中的数字只是举例。但是发生的事情是 Jacoco 比 Intellij 的代码运行器有更多的方法和更多的行。我在想 Intellij 的代码运行器不计算 lombok 注释等。如果我为具有 2 个字段的类添加 @Getter,则在运行时该类将生成这 2 个方法。也许 Jacoco 正在计算这些课程,而 Intellij 没有?我猜与其他库注释相同。
标签: java gradle intellij-idea code-coverage jacoco