小编Paw*_*wel的帖子

在声纳中获得正确的覆盖率,以在单独的Maven模块中进行单元和集成测试

我的项目设置很简单(所有资源都可以在github上找到):

父母
?后端
?客户
?整合测试

在运行Maven之后:

mci sonar:sonar -Dsonar.host.url=http://localhost:9000 -Dsonar.login=12...9
Run Code Online (Sandbox Code Playgroud)

我看到声纳可以看到单元测试和集成测试,但是IT的覆盖范围却不大。 声纳覆盖 声纳覆盖范围详细

对于Intelij IDEA来说jacoco-it.exec不错: 想法覆盖

我假设罪魁祸首在这里:

[INFO] Sensor JaCoCoSensor [java]
[INFO] No JaCoCo analysis of project coverage can be done since there is no class files.
[INFO] Sensor JaCoCoSensor [java] (done) | time=1ms
Run Code Online (Sandbox Code Playgroud)

所以我做了一个小技巧(总之:将所有源文件复制到integration-test模块中):

    <properties>
        <sonar.sources>${basedir}/target/copied</sonar.sources>
    </properties>
    [...]
        <!-- hack to generate coverage reports -->
        <plugin>
            <artifactId>maven-resources-plugin</artifactId>
            <version>${maven-resources-plugin.version}</version>
            <executions>
                <execution>
                    <id>copy-resources</id>
                    <phase>generate-sources</phase>
                    <goals>
                        <goal>copy-resources</goal>
                    </goals>
                    <configuration>
                        <outputDirectory>${sonar.sources}</outputDirectory>
                        <resources>
                            <resource>
                                <directory>${basedir}/../backend/src/main/java</directory>
                                <filtering>false</filtering>
                            </resource>
                        </resources>
                    </configuration> …
Run Code Online (Sandbox Code Playgroud)

java integration-testing code-coverage maven sonarqube

6
推荐指数
1
解决办法
2893
查看次数