1

所以我安装了 Cobertura 插件的 Jenkins。我在 POM 中有 Cobertura 和 findbugs,我的测试运行了两次......

我认为这是因为 Cobertura 对字节码进行了检测,这会导致测试重新运行,我猜这不是一件坏事,因为检测的代码与非检测的代码不同......但我真的会就像测试只运行一次。

我尝试使用以下命令在命令行上本地运行它们:

mvn cobertura:cobertura -Dcobertura.report.format=xml

mvn findbugs:findbugs -Dfindbugs.onlyAnalyze=true

mvn cobertura:cobertura -Dcobertura.report.format=xml findbugs:findbugs -Dfindbugs.onlyAnalyze=true

但我无法让测试在本地运行两次,而在 Jenkins 上运行两次。我不确定为什么会发生这种情况以及我是否可以让它停止。

我正在使用 Cobertura 为我生成报告...我假设要生成它们需要重新运行测试?但这没有意义,因为它们已经运行过一次。

4

2 回答 2

3

我们也面临同样的行为。重新运行测试用例以计算覆盖率似乎是 Cobertura 的默认行为。

我们切换到 JaCoCo 工具,事实证明它更好。它不会重新运行覆盖率报告的测试用例。

于 2015-06-18T15:32:16.987 回答
1

实际上,您必须使用cobertura-maven-plugin(或使用不同的配置文件)运行两次测试。这种行为是因为它在自己的生命周期中运行 Cobertura 工具,并使用 Cobertura 可执行文件而不是 Cobertura API。

如果您想在只运行一次测试时生成 Cobertura 报告,您可以尝试使用该qualinsight-mojo-cobertura-core插件。该插件使用不同的方法来运行 Cobertura 检测。

您将在项目页面上找到文档:https ://github.com/QualInsight/qualinsight-mojo-cobertura 。

请注意,此插件仍有一些限制,但在您的上下文中它可能是一个可行的替代方案。

希望能帮助到你 !

问候。

于 2015-09-21T11:34:28.543 回答