【问题标题】:How to only run unit tests once when running "maven clean install" and Sonar?运行“maven clean install”和Sonar时如何只运行一次单元测试?
【发布时间】:2011-11-21 03:46:30
【问题描述】:

我的 Jenkins 工作有以下配置: 首先清理和构建maven项目,然后运行单元测试和静态分析:clean install sonar:sonar 问题是installsonar:sonar 各自运行单元测试,这实际上使构建时间加倍。

我通过将 clean install sonar:sonar 更改为 clean install -DskipTests 并使用 Jenkins 声纳插件运行声纳来解决此问题。现在单元测试只运行了一次,sonar 显示了结果,但 Jenkins 不再知道这些测试了。

我的猜测是 Jenkins 只是在构建之后查看 surefire-reports 文件夹,而不是在 Sonar 之后(这是构建后的操作)。

【问题讨论】:

    标签: unit-testing maven jenkins sonarqube surefire


    【解决方案1】:

    您可以先运行clean install -DskipTests,然后添加第二个maven 构建步骤sonar:sonar。 测试(和完整的声纳分析)将在构建阶段运行,之后 jenkins 可以收集可靠的结果。

    【讨论】:

      【解决方案2】:

      正如您所说,Sonar 是一个后编译步骤。 Sonar 要求构建完成并通过所有测试才能运行,否则它所做的事情没有任何意义。

      Sonar 使用仪器运行测试(如果我没记错的话是 cobertura),它提供了测试的代码覆盖率。

      因此,您需要在 Sonar 运行之前进行安装(或至少编译和测试),然后 Sonar 重​​新运行测试并为其自己的目的进行检测。

      【讨论】:

        猜你喜欢
        • 2021-04-23
        • 2013-06-29
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多