使用JaCoCo获取Arquillians代码覆盖率

时间:2018-02-08 09:05:34

标签: sonarqube jacoco jboss-arquillian jacoco-maven-plugin

我有一个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报告代码覆盖率?

0 个答案:

没有答案