我正在编写一个应用程序,其目标类(在src / main / java中)被编写/编译为Java 7,但其单元测试(在src / test / java中)是用Groovy编写的。我在运行mvn sonar:sonar
时尝试从Sonarqube获取指标。我得到了大部分内容,但我没有从JaCoCo获得代码覆盖率指标。相反,当跑步者到达JaCoCo传感器时,我得到以下消息:
Project coverage is set to 0% as no JaCoCo execution data has been dumped: C:\Users\fiddlerpianist\Projects\emailnotifier\target\jacoco.exec
但是,当我在Eclipse中运行EclEmma coverage(使用JaCoCo)时,我会使用这些Groovy测试获得完整的覆盖率报告。它只是通过Sonarqube不起作用。有谁知道为什么它不起作用,或者是否有一种方法可以配置不同的东西以使其工作?我已经尝试了一堆配置的排列,但到目前为止......没有运气。
我使用的Maven java编译器插件的配置略有不同(即我使用lombok):
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<version>3.1</version>
<configuration>
<compilerId>groovy-eclipse-compiler</compilerId>
<source>1.7</source>
<target>1.7</target>
<compilerArguments>
<javaAgentClass>lombok.core.Agent</javaAgentClass>
</compilerArguments>
<fork>true</fork>
</configuration>
<dependencies>
<dependency>
<groupId>org.codehaus.groovy</groupId>
<artifactId>groovy-eclipse-compiler</artifactId>
<version>2.7.0-01</version>
</dependency>
<dependency>
<groupId>org.codehaus.groovy</groupId>
<artifactId>groovy-eclipse-batch</artifactId>
<version>2.0.8-01</version>
</dependency>
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<version>1.12.6</version>
</dependency>
</dependencies>
</plugin>
我的Groovy依赖项的范围是test
:
<dependencies>
<dependency>
<groupId>org.codehaus.groovy</groupId>
<artifactId>groovy-all</artifactId>
<version>2.0.8</version>
<scope>test</scope>
</dependency>
</dependencies>
我正在使用Sonarqube 3.7.4,Maven 3.1.1,Groovy 2.0.8和Java 7.我正在使用Sonar Maven插件的所有默认值(版本2.2)。
答案 0 :(得分:1)
所以事实证明你必须在.java
文件夹中至少有一个src/test/java
扩展名的文件(甚至不需要进行测试),然后一切正常。它让我想起了Maven的一个Groovy集成错误,它曾经需要一个带有Groovy代码的Java文件,但是他们修复了它。