我有一个Maven版本,可以在Wildfly上运行Arquillian测试 . 我想要做的是运行JaCoCo,以便我获得测试覆盖率 .

我对我工作的Arquillian设置做了什么:我通过以下方式更改了父亲的pom.xml:

<properties>
    <sonar.java.coveragePlugin>jacoco</sonar.java.coveragePlugin>
    <sonar.dynamicAnalysis>reuseReports</sonar.dynamicAnalysis>

    <jacoco.out.ut.file>../target/jacoco/jacoco-ut.exec</jacoco.out.ut.file>
    <jacoco.out.it.file>../target/jacoco/jacoco-it.exec</jacoco.out.it.file>
    <sonar.jacoco.reportPaths>${jacoco.out.ut.file},${jacoco.out.it.file}</sonar.jacoco.reportPaths>
</properties>

<build>
    <plugins>
        <plugin>
            <groupId>org.jacoco</groupId>
            <artifactId>jacoco-maven-plugin</artifactId>
            <version>${jacoco.version}</version>
            <executions>
                <execution>
                    <id>prepare-ut-agent</id>
                    <phase>process-test-classes</phase>
                    <goals>
                        <goal>prepare-agent</goal>
                    </goals>
                    <configuration>
                        <destFile>${jacoco.out.ut.file}</destFile>
                        <propertyName>jacoco.agent.ut.arg</propertyName>
                        <append>true</append>
                    </configuration>
                </execution>
                <execution>
                    <id>prepare-it-agent</id>
                    <phase>package</phase>
                    <goals>
                        <goal>prepare-agent-integration</goal>
                    </goals>
                    <configuration>
                        <destFile>${jacoco.out.it.file}</destFile>
                        <propertyName>jacoco.agent.it.arg</propertyName>
                        <append>true</append>
                    </configuration>
                </execution>
            </executions>
        </plugin>
    </plugins>

    <pluginManagement>
        <plugins>
            <plugin>
                <artifactId>maven-failsafe-plugin</artifactId>
                <configuration>
                    <argLine>${test.argLine} ${jacoco.agent.it.arg}</argLine>
                </configuration>
            </plugin>
            <plugin>
                <artifactId>maven-surefire-plugin</artifactId>
                <configuration>
                    <argLine>${test.argLine} ${jacoco.agent.ut.arg}</argLine>
                </configuration>
            </plugin>
        </plugins>
    </pluginManagement>
</build>

这是一个适用于多个其他项目(没有Arquillian)的设置,所以我认为它现在也必须工作 .

对于托管集成项目的模块,我添加了以下内容:

<dependencies>
    <dependency>
        <groupId>org.jboss.arquillian.extension</groupId>
        <artifactId>arquillian-jacoco</artifactId>
        <version>1.0.0.Alpha9</version>
        <scope>test</scope>
    </dependency>
</dependencies>

maven-surefire-plugin 在那里被召唤(这对我来说很奇怪,但我尝试了 maven-failsafe-plugin 并且它也没有用) .

执行时,模块会生成一个jacoco.exec(仅对一个模块为70kb,因此至少不为空) . Sonar在报告生成中使用这些文件 . 代码覆盖率仍然显示为0% .

我找到了关于这个主题的几个教程,但它们似乎都缺少了一步(至少设置总是与我的相同) .

如何让Arquillian使用JaCoCo报告代码覆盖率?