所以我安装了带有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为我生成报告...我认为要生成它们需要重新运行测试吗?但它没有意义,因为它们已经被运行过一次。
答案 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。
请注意,此插件仍有一些限制,但在您的上下文中它可能是一个可行的选择。
希望它有所帮助!
问候。