参考项目

以下只列举了主要内容,详情可参考https://github.com/hjpcs/RestAssuredDemo

配置pom.xml文件

<plugin>
    <groupId>org.jacoco</groupId>
    <artifactId>jacoco-maven-plugin</artifactId>
    <version>0.8.3</version>
    <configuration>
        <!--指定生成 .exec 文件的存放位置-->
        <destFile>target/jacoco.exec</destFile>
        <!--Jacoco 是根据 .exec 文件生成最终的报告,所以需指定 .exec 的存放路径-->
        <dataFile>target/jacoco.exec</dataFile>
    </configuration>
    <executions>
        <execution>
            <id>jacoco-initialize</id>
            <goals>
                <goal>prepare-agent</goal>
            </goals>
        </execution>
        <execution>
            <id>jacoco-site</id>
            <phase>test</phase>
            <goals>
                <goal>report</goal>
            </goals>
        </execution>
    </executions>
</plugin>

以上配置了jacoco插件,使用mvn clean test即可执行单元测试并生成覆盖率报告。

Junit5踩坑

在用mvn clean test执行测试类时,发现使用junit5写的单元测试类能扫到,但是里面的测试方法却一个也不执行,导致覆盖率报告结果都是n/a,经过排查以后发现pom.xml中除了需要配置junit5单测的代码依赖以外,还需要配置执行依赖。

代码依赖

<dependency>
    <groupId>org.junit.jupiter</groupId>
    <artifactId>junit-jupiter-api</artifactId>
    <version>RELEASE</version>
    <scope>test</scope>
</dependency>
<dependency>
    <groupId>org.junit.jupiter</groupId>
    <artifactId>junit-jupiter-params</artifactId>
    <version>5.3.2</version>
    <scope>test</scope>
</dependency>

执行依赖

<dependency>
    <groupId>org.junit.platform</groupId>
    <artifactId>junit-platform-launcher</artifactId>
    <version>1.0.1</version>
    <scope>test</scope>
</dependency>
<dependency>
    <groupId>org.junit.jupiter</groupId>
    <artifactId>junit-jupiter-engine</artifactId>
    <version>5.0.1</version>
    <scope>test</scope>
</dependency>
<dependency>
    <groupId>org.junit.vintage</groupId>
    <artifactId>junit-vintage-engine</artifactId>
    <version>4.12.1</version>
    <scope>test</scope>
</dependency>

提交至sonarqube

执行mvn clean test后在target目录下会生成一个jacoco.exec文件,使用mvn sonar:sonar命令会在扫描源代码的同时默认将覆盖率文件也一并提交至sonarqube平台。

sonarqube搭建可参考另一篇文章http://hjpcs.top/index.php/2019/05/25/sonarqube/

分类: 测试

发表评论

电子邮件地址不会被公开。