surefire插件不适用于jacoco插件

时间:2014-08-18 12:25:48

标签: maven code-coverage sonarqube jacoco test-coverage

我想在我的项目中进行测试覆盖。我创建了个人资料 我的pom xml配置文件是:

    <profile>
        <id>test-coverage</id>
        <build>
            <plugins>
                <plugin>
                    <groupId>org.apache.maven.plugins</groupId>
                    <artifactId>maven-surefire-plugin</artifactId>
                    <version>${maven.surefire.plugin.version}</version>
                    <configuration combine.self="override">
                        <redirectTestOutputToFile>true</redirectTestOutputToFile>
                        <testFailureIgnore>true</testFailureIgnore>
                        <argLine>
                            -Xms128m -Xmx1G -XX:MaxPermSize=128M
                        </argLine>

                           <groups>com.project.test.annotation.QuickTest</groups>

                    </configuration>
                </plugin>
                <plugin>
                    <groupId>org.jacoco</groupId>
                    <artifactId>jacoco-maven-plugin</artifactId>
                    <version>0.7.1.201405082137</version>
                    <executions>
                        <execution>
                            <goals>
                                <goal>prepare-agent</goal>
                            </goals>
                        </execution>
                        <execution>
                            <id>report</id>
                            <phase>prepare-package</phase>
                            <goals>
                                <goal>report</goal>
                            </goals>
                        </execution>
                    </executions>
                </plugin>

            </plugins>
        </build>

    </profile>

我正在运行这些命令: mvn clean install -DfailIfNoTests = false -P test-coverage mvn声纳:声纳

我无法获得测试报道,我错过了什么? 我的声纳版本:4.3

3 个答案:

答案 0 :(得分:1)

您遇到的主要问题是surefire maven插件的argLine属性的定义,该属性应设置为属性而不是插件的配置。 因为当您这样做时,JaCoCo maven插件无法设置argline来配置其代理。

因此argLine应该被定义为你的pom中的一个属性。

有关详细信息,请参阅http://docs.sonarqube.org/display/SONAR/JaCoCo+Plugin

答案 1 :(得分:0)

你应该能够在surefire插件中添加一个jacoco监听器,例如

<plugin>
  <groupId>org.apache.maven.plugins</groupId>
  <artifactId>maven-surefire-plugin</artifactId>
  <!-- Minimal supported version is 2.4 -->
  <version>2.13</version>
  <configuration>
    <properties>
      <property>
        <name>listener</name>
        <value>org.sonar.java.jacoco.JUnitListener</value>
      </property>
    </properties>
  </configuration>
</plugin>

答案 2 :(得分:0)

只需将你的argline设置为这样

即可
<argLine>
     ${argLine} -Xms128m -Xmx1G -XX:MaxPermSize=128M
</argLine>

当JaCoCo为其代理设置argLine时,你不会覆盖它,你只需将它附加到它上面。