Maven与Cobertura和测试正在运行两次



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

我认为这是因为 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为我生成报告...我假设要生成它们,它需要重新运行测试?但这没有意义,因为它们已经运行了一次。

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

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

事实上,

您必须使用 cobertura-maven-plugin 运行两次测试(或使用不同的配置文件)。此行为是由于它在自己的生命周期中运行 Cobertura 检测并使用 Cobertura 可执行文件而不是 Cobertura API。

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

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

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

希望对您有所帮助!

问候。

最新更新