【问题标题】:Sonar + JaCoCo - Code coverage for both Java and GroovySonar + JaCoCo - Java 和 Groovy 的代码覆盖率
【发布时间】:2016-11-08 04:57:53
【问题描述】:

我在让 Sonar 显示用 Java 和 Groovy 编写的测试的代码覆盖率时遇到了一些问题。我有一个 Maven 多模块项目,其中一个模块可以这样举例说明:

firstServer
  src/test/groovy
    package1
      GroovyTest1.groovy
      GroovyTest2.groovy
  src/test/java
    package2
      JavaTest1.java
      JavaTest2.java

firstServer 的 pom.xml 如下所示:

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
...
<build>
    <plugins>
        <plugin>
            <groupId>org.jacoco</groupId>
            <artifactId>jacoco-maven-plugin</artifactId>
            <version>0.7.7.201606060606</version>
            <configuration>
                <destFile>${sonar.jacoco.reportPath}</destFile>
                <append>true</append>
            </configuration>
            <executions>
                <execution>
                    <id>agent</id>
                    <goals>
                        <goal>prepare-agent</goal>
                    </goals>
                </execution>
            </executions>
        </plugin>
        ...
    </plugins>
</build>

我的声纳属性在父 pom.xml:

<properties>
    <sonar.java.coveragePlugin>jacoco</sonar.java.coveragePlugin>
    <sonar.dynamicAnalysis>reuseReports</sonar.dynamicAnalysis>
    <sonar.jacoco.reportPath>${project.basedir}/../target/jacoco.exec</sonar.jacoco.reportPath>
</properties>

当我运行命令 mvn package sonar:sonar 并访问 SonarQube 查看结果时,代码覆盖率只考虑了 java 类。即使我有很多单元测试,我也看不到任何 groovy 类。我想我在我的 POM 文件中遗漏了一些东西,但我不知道是什么。我读过在使用 Sonar 和 JaCoCo 时可以混合使用 Groovy 和 Java 测试类。我的问题很简单,我错过了什么?

提前致谢!

【问题讨论】:

    标签: java maven groovy sonarqube jacoco


    【解决方案1】:

    您还需要添加源和测试配置:

    <sonar.sources>src/main/java,src/main/groovy</sonar.sources>
    <sonar.tests>src/test/java,src/test/groovy</sonar.tests>
    

    插件似乎忽略了 Groovy。

    【讨论】:

    • 我在 src/main/groovy 中没有任何 Groovy 类。 src/test/groovy 中的 Groovy 测试测试 Java 类中的代码。
    • 我忘记了配置的第二部分...查看更新的答案。如果不需要,可以删除源配置。
    • 感谢您的回答,但我有一个问题。因为我没有任何 groovy 资源,所以我只添加了 sonar.tests 属性。构建项目是成功的,但常规测试仍然没有得到照顾。我注意到当 Sonar 扫描包含 src/test/groovy 的 Maven 模块时,找不到 Groovy 测试类。日志消息例如:[WARNING] Resource not found: myPackage.MyGroovyTest 有什么想法吗?
    • 在 Sonar 中安装 Groovy 插件。以 admin/admin 身份登录并转到管理/系统/更新中心选项卡
    【解决方案2】:
    1. 在 Sonar 中安装 Groovy 插件。以 admin/admin 身份登录并转到管理/系统/更新中心选项卡
    2. 在 pom 文件中添加以下属性 &lt;sonar.tests&gt;src/test/groovy,src/test/java&lt;/sonar.tests&gt;

    【讨论】:

      猜你喜欢
      • 2012-06-11
      • 1970-01-01
      • 2018-07-24
      • 2013-02-07
      • 2014-02-16
      • 2020-04-20
      • 2013-11-28
      • 2012-09-29
      相关资源
      最近更新 更多