由于缺少执行数据错误而跳过JaCoCo执行

时间:2014-08-18 23:12:49

标签: maven jenkins code-coverage jacoco

我正在

  

由于缺少执行数据文件而跳过JaCoCo执行:/scratch/jenkins/workspace/sonar-test/target/jacoco.exec错误

我的pom档案是:

    <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>
                           <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>

我错过了什么?

3 个答案:

答案 0 :(得分:15)

您需要在surefire插件配置中添加$ {argLine}。 例如:

        <build>
            <plugins>
                <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>
                <plugin>
                    <artifactId>maven-surefire-plugin</artifactId>
                    <version>2.14.1</version>
                    <configuration>
                        <argLine>${argLine}</argLine>
                    </configuration>
                </plugin>
            </plugins>
        </build>

如果您愿意,可以将其他参数添加到surefire插件中:

<argLine>${argLine} -XX:PermSize=128m -XX:MaxPermSize=512m</argLine>

答案 1 :(得分:15)

缺少jacoco.exec的另一个原因可能是项目中没有任何单元测试。

编辑: 我想知道,为什么我的答案被否决,因为没有人在评论中留下任何理由。 我们在包含3个子项目的项目中有相同的错误消息。其中一个是新的,没有任何测试 - 在添加一个虚拟单元后,测试错误消失了。

答案 2 :(得分:3)

<profile>的{​​{1}}更改为,注意:使用<build>的最新版本

jacoco-maven-plugin