测试的覆盖率,测试报告怎么生成的呢

本文介绍了如何在IntelliJ IDEA中使用Jacoco进行代码覆盖率测试,包括修改覆盖率工具、Onthefly动态覆盖率模式、Maven Test的使用以及生成HTML和更全面的测试报告。此外,还涉及了Allure报告的美化,详细讲解了相关注解的使用,以提升测试报告的可读性和完整性。
摘要由CSDN通过智能技术生成

 

1.覆盖率

常见的覆盖率有很多种例如语句覆盖,分支覆盖等,在IDEA中默认使用的是自己的覆盖率工具。通过覆盖率我们可以获取测试脚本是否跑完了所测对象的所有功能或者分支,从而获得对被测试对象的质量保证量化指标。

这里我们使用Jacoco为例。

在Idea中修改覆盖率工具jacoco,选择生成文件。

被测代码可以看到详细的执行说明,那些被执行了那些没有。

 

2.On the fly动态覆盖率模式

有没有想过前面的覆盖率都是跑单元测试来的,如果已经发布了能不能动态的获取用户访问系统的覆盖率呢?On the fly模式就是这个问题的答案。

通过Mvn package打一个包(单元测试都要通过才能获得包,也可以通过跳过单元测试的配置来实现该效果)

mvn package -Dmaven.test.skip=truemvn package -Dmaven.test.skip=true

下载Jacoco

https://www.jacoco.org/jacoco/index.html

这里我们下载0.8.5版本,然后将其解压,这里需要使用的是jacocoagent.jar文件

通过命令启动jar包

首先要新建一个.bat 启动包

java -javaagent:jacocoagent.jar=destfile=f:/jacoco.exec,output=file -jar springboot_dazhenghe-0.0.1-SNAPSHOT.jar

设定导出文件模式及地址(这里为了省事就不纠结tomcat部署模式了)

运行接口调用等内容(通过Postman即可),然后停止服务即可。可以看到jacoco.exec的覆盖率报告生成。

导出的jacoco.exec是覆盖率文件通过idea的 show Coverage Data即可解析成为报告,也可以继续生成HTML报告文件

Run > Show Code Coverage Data(新版本的IDEA注意)

通过执行多次自动化测试后反复加载测试报告文件即可获取最终的覆盖率数据,这样可以知道哪些测试用例脚本完成了被测代码的100%覆盖。

可以在IDEA中导出覆盖率HTML报告,报告右侧的session记录了每次执行补充的信息。

3.Maven Test

通过Mvn test命令可以一次性执行多个测试用例。如果不配置也可以直接运行,这里我们手动添加具体的插件版本。

 <dependency>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-surefire-plugin</artifactId>
            <version>2.22.2</version>
        </dependency>

在这个pom插件后可以配置大量的执行内容。

在打包时需要跳过测试则使用这个命令

mvn package -Dmaven.test.skip=true 
package -Dmaven.test.skip=true -f pom.xml

默认Mvn test执行所有的测试用例(基于test开头或者test结尾的类),

如果需要单独控制执行范围

执行SimpleTest.java这个类

$ mvn -Dtest=com.cloud.appium.SimpleTest test
test -Dtest=com.example.utils.myTest -f pom.xml

 

说明解释

使用 mvn test执行单元测试的时候,默认情况是把工程所有的testcase都执行一遍。如果需要执行某一个 SimpleTest.java类,可以通过上面的命令。其中-Dtest参数就是关键,参数的值为“com.cloud.appium.SimpleTest” 这个是要执行的单元测试类名,需要包含package

-Dtest的参数是可以用表达式的.

比如执行多个测试用例可以用逗号分开 mvn test -Dtest=App2Test,AppTest.

也可以用ant风格的路径表达式mvn test -Dtest=*2Test,mvn test -Dtest=???2Test.

甚至指定具体的测试方法mvn test -Dtest=*Test#testAdd.

指定具体包里的测试用例mvn test -Dtest=com/cloud/learn/maven/*.

<plugin>
    <groupId>org.apache.maven.plugins</groupId>
    <artifactId>maven-surefire-plugin</artifactId>
    <version>2.22.2</version>
    <dependencies>
        <dependency>
            <groupId>org.apache.maven.surefire</groupId>
            <artifactId>surefire-junit6.3.2</artifactId>
            <version>2.22.2</version>
        </dependency>
    </dependencies>
    <configuration>
        <!--配置是否跳过测试用例执行-->
        <!--<skipTests>true</skipTests>-->
        <includes>
            <include>**/AppTest.java</include>
        </includes>
        <excludes>
            <exclude>**/App2Test.java</exclude>
        </excludes>
    </configuration>
</plugin>

 

4.生成HTML报告

<dependency>
    <groupId>org.apache.maven.plugins</groupId>
    <artifactId>maven-surefire-report-plugin</artifactId>
    <version>2.22.2</version>
</dependency>

配置命令

mvn surefire-report:report命令

执行的时候漫长的各种插件同步下载。

执行完成后可以在target\site目录下看到对应的HTML报告surefire-report.html

效果

5.基于Mvn 构建Jacoco更加全面的测试报告

路径覆盖,分支覆盖

<dependency>
    <groupId>org.jacoco</groupId>
    <artifactId>jacoco-maven-plugin</artifactId>
    <version>0.8.5</version>
</dependency>

执行mvn install即可在target\site\jacoco目录看到更加全面的覆盖率报告 

打开index.html效果

 

6.Allure美化Junit最后测试报告

官方下载

http://allure.qatools.ru/

直接使用模式

allure.bat serve F:\IEDAproject\springboot\springboot_dazhenghe\target\surefire-reports

 添加引用

<dependency>
            <groupId>io.qameta.allure</groupId>
            <artifactId>allure-junit5</artifactId>
            <version>2.13.3</version>
            <scope>test</scope>
        </dependency>

添加引用后使用mvn test会生成

allure-results目录

这个时候指定测试报告生成对这个目录

allure.bat serve D:\Work\code\ketestopsdemo\allure-results

接着就可以使用各种注解了

Java的注解和特性可用于allure的主要特性,并列举了如下一些注解特性:

注解        说明
@DisplayName        设置用例展示名称
@Description        描述
@Step        设置步骤,完成步骤描述
@Attachments        添加附件
Links: @Link、@Issue、@TmsLink        将测试链接到某些资源,设置bug编号 ,设置用例编号
@Severity        设置bug等级,blocker、caitical、minor、normal、trivial

@SpringBootTest
@Epic("Epic测试")
@Feature("第一个feature")
class DemoApplicationTests {

    @Test
    @Tag("基础测试")
    @Issue("指定缺陷")
    @TmsLink("tmslink?")
  //什么链接
    @Severity(SeverityLevel.NORMAL)
  //什么优先级别
    @Story("场景测试")
    void contextLoads() {
        mytest1();
        Assertions.fail();
    }
    @Story("我的第二个测试用例")
    @DisplayName("junit显示名称")
    @Description("allure描述说明")
    @Test
    void mytest1(){

    }

}

注解        说明
@DisplayName        设置用例展示名称
@Description        描述
@Step        设置步骤,完成步骤描述
@Attachments        添加附件
Links: @Link、@Issue、@TmsLink        将测试链接到某些资源,设置bug编号 ,设置用例编号
@Severity        设置bug等级,blocker、caitical、minor、normal、trivial

@SpringBootTest
@Epic("Epic测试")
@Feature("第一个feature")
class DemoApplicationTests {

    @Test
    @Tag("基础测试")
    @Issue("指定缺陷")
    @TmsLink("tmslink?")
  //什么链接
    @Severity(SeverityLevel.NORMAL)
  //什么优先级别
    @Story("场景测试")
    void contextLoads() {
        mytest1();
        Assertions.fail();
    }
    @Story("我的第二个测试用例")
    @DisplayName("junit显示名称")
    @Description("allure描述说明")
    @Test
    void mytest1(){

    }

}

 效果展示

评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值