Maven与Cobertura和findbugs - 测试运行两次

时间:2015-06-18 13:00:09

标签: maven findbugs cobertura maven-cobertura-plugin

所以我安装了带有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为我生成报告...我认为要生成它们需要重新运行测试吗?但它没有意义,因为它们已经被运行过一次。

2 个答案:

答案 0 :(得分:3)

我们遇到了同样的行为。似乎是Cobertura的默认行为是重新运行计算覆盖率的测试用例。

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

答案 1 :(得分:1)

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

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

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

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

希望它有所帮助!

问候。

相关问题