繁体   English   中英

在声纳中获得正确的覆盖范围,用于单独的maven模块中的单元和集成测试

[英]Get correct coverage in sonar for unit and integration tests in separate maven modules

我的项目设置很简单(所有源代码都在github上提供 ):


↳后端
↳客户
↳集成测试

跑完maven之后:

mci sonar:sonar -Dsonar.host.url=http://localhost:9000 -Dsonar.login=12...9

我看到声纳可以看到单元和集成测试,但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

所以我做了小黑客 (简而言之:将所有源文件复制到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>
                </execution>
            </executions>
        </plugin>
        <plugin>
            <groupId>org.codehaus.mojo</groupId>
            <artifactId>build-helper-maven-plugin</artifactId>
            <executions>
                <execution>
                    <phase>generate-sources</phase>
                    <goals>
                        <goal>add-source</goal>
                    </goals>
                    <configuration>
                        <sources>
                            <source>${sonar.sources}</source>
                        </sources>
                    </configuration>
                </execution>
            </executions>
        </plugin>

但现在我的所有课程都重复了(声纳显示来自../target/copied dir的课程): 声纳覆盖重复

声纳版本:6.5
Jacoco maven插件:0.7.5.201505241946(也尝试过最新的0.7.9)

任何想法我应该在这做什么?

看起来我已经回答了这个问题:

  1. 由于post-unit-test执行处于错误阶段,因此未生成报告。 我没有<phase>test</phase>而是<phase>verify</phase>

  2. 我有一个错误的post-integration-test目标。 更改是从<goal>report-integration</goal><goal>report-aggregate</goal>

    • 这个目标允许我在测试与被测代码分开的项目中创建覆盖率报告。
  3. 添加了属性: <jacoco.itReportPath>${project.basedir}/../integrations-tests/target/jacoco-it.exec</jacoco.itReportPath><sonar.jacoco.reportPaths>${jacoco.itReportPath},${project.build.directory}/jacoco-it.exec,${project.build.directory}/jacoco.exec</sonar.jacoco.reportPaths>

所有这些chages和更新项目都可以在github上找到

我主要使用jacoco进行报道。 在开始之前,你需要做一些事情

  1. 启用并配置surefire插件
  2. 启用并配置jacoco插件

这是您将构建并忘记的一次性配置,我的一个项目作为父项启用此功能。 请随意查看: https//github.com/slixes/parent/blob/master/pom.xml

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM