【问题标题】:Maven with Cobertura and findbugs - tests are running twiceMaven 与 Cobertura 和 findbugs - 测试运行两次
【发布时间】:2015-06-18 13:00:09
【问题描述】:

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

【问题讨论】:

标签: maven findbugs cobertura maven-cobertura-plugin


【解决方案1】:

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

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

【讨论】:

    【解决方案2】:

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

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

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

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

    希望对你有帮助!

    问候。

    【讨论】:

    • 请不要对多个问题发布完全相同的答案。而是选择最好的问题并在那里发布您的答案,然后您可以将较差的问题标记为与较好的问题重复。如果它们不是重复的,那么您需要更改每个答案,以便它回答 该特定问题。我投票结束这个问题作为原始问题的副本:running junits and cobertura with maven。
    • 我明白你的意思,但是这个问题是 3 个月前提出的,你标记为“更好的问题”的问题是 6 年前提出的,并被标记为“maven-2”,“蚂蚁”。我想你会同意 6 年前给出的答案可能已经过时了,不是吗?因此,我不同意您的投票(请注意,我将修改我的其他答案以引用此问题,这是最新的问题。)亲切的问候。
    猜你喜欢
    • 2014-12-17
    • 2014-10-14
    • 2015-06-18
    • 2011-05-30
    • 2012-01-16
    • 2011-01-12
    • 2011-04-07
    • 2010-10-18
    • 2016-01-18
    相关资源
    最近更新 更多