2016-07-06 209 views
2

我在使用Java和Groovy编写的测试中对Sonar显示代码覆盖率有一些问题。我有一个Maven多模块项目,其中一个模块可以举例如下:Sonar + JaCoCo - Java和Groovy的代码覆盖率

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

的pom.xml为firstServer看起来是这样的:

<?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包声纳:sonar并访问SonarQube查看结果时,代码覆盖率仅考虑java类。即使我有很多这样的单元测试,我也看不到任何常规课程。我想我在我的POM文件中丢失了一些东西,但我不知道是什么。我读过使用Sonar和JaCoCo时可能混合使用Groovy和Java测试类。我的问题很简单,我错过了什么?

在此先感谢!

回答

0

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

​​

看来,插件忽略Groovy的除外。

+0

我没有在任何** Groovy类的src/main /常规**。 ** src/test/groovy **中的Groovy测试测试Java类中的代码。 –

+0

我忘了配置的第二部分...查看更新的答案。如果你不需要它,你可以移除源代码配置。 – cjstehno

+0

感谢您的回答,但我有一个问题。由于我没有任何常规来源,我只添加了sonar.tests属性。 建设该项目是成功的,但常规测试仍然没有照顾。我注意到,当Sonar扫描包含** src/test/groovy **的Maven模块时,则无法找到Groovy测试类。日志消息是,例如: [警告]资源未找到:myPackage.MyGroovyTest 任何想法? –

0
  1. 在Sonar中安装Groovy插件。以管理员身份登录/管理员并转到管理/系统/更新中心标签
  2. 添加以下属性在POM文件 <sonar.tests>src/test/groovy,src/test/java</sonar.tests>