专栏首页测试邦UnitTest:maven中使用Jacoco计算代码覆盖率

UnitTest:maven中使用Jacoco计算代码覆盖率

一、Jacoco 简介

jacoco 官网 https://www.eclemma.org/jacoco/

Jacoco可以嵌入到Ant、Maven中,也可以使用Java Agent技术监控任意Java程序,也可以使用Java Api来定制功能。

Jacoco会监控JVM中的调用,生成监控结果(默认保存在jacoco.exec文件中),然后分析此结果,配合源代码生成覆盖率报告。

二、基于maven的配置jacoco

在pom.xml中添加配置

<plugin> <groupId>org.jacoco</groupId> <artifactId>jacoco-maven-plugin</artifactId> <version>0.7.8</version> <executions> <execution> <id>default-prepare-agent</id> <goals> <goal>prepare-agent</goal> </goals> <configuration> <destFile> ${project.build.directory}/coverage-reports/jacoco.exec </destFile> <propertyName>surefireArgLine</propertyName> </configuration> </execution> <execution> <id>default-report</id> <phase>test</phase> <goals> <goal>report</goal> </goals> <configuration> <dataFile>${project.build.directory}/coverage-reports/jacoco.exec</dataFile> <outputDirectory>${project.reporting.outputDirectory}/jacoco</outputDirectory> </configuration> </execution> </executions> </plugin> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-surefire-plugin</artifactId> <version>2.16</version> <configuration> <argLine>${surefireArgLine} -Xmx1024m -XX:PermSize=256m -XX:MaxPermSize=256m</argLine> </configuration> </plugin>

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

如果是使用junit 使用以上配置。

如果是testng 需要添加 suiteXmlFile。在testng.xml中添加tastclass

<plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-surefire-plugin</artifactId> <version>2.16</version> <configuration> <suiteXmlFiles> <suiteXmlFile>testng.xml</suiteXmlFile> </suiteXmlFiles> <argLine>${surefireArgLine} -Xmx1024m -XX:PermSize=256m -XX:MaxPermSize=256m</argLine> </configuration> </plugin>

假设说原本的项目用的是junit 后来改用testng,这时候不需要修改junit的tastcase,只需配testng.xml ,testng可以执行junit的代码。testng.xml配置如下:

<?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE suite SYSTEM "http://testng.org/testng-1.0.dtd"> <suite name="Converted JUnit suite" > <test name="JUnitTests" junit="true"> <classes> <class name="com.yihu.mybatis.dao.TestProjectNameMapper" /> </classes> </test> </suite>

3、执行测试

mvn clean test

4、测试结果

执行成功后会在target/site目录下生成html覆盖率报告

报告目录

index.html

本文转自:

https://www.jianshu.com/p/f17f06b0b7e1

***往期精彩***:

谈谈测试服务化

基于docker容器技术的测试平台解决方案(dap)

安全测试|移动端安全测试drozer

基于puppeteer的前端性能测试解决方案

解锁自动化测试专栏

本文分享自微信公众号 - 测试邦(testerbang)

原文出处及转载信息见文内详细说明,如有侵权,请联系 yunjia_community@tencent.com 删除。

原始发表时间:2019-08-06

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • SSE+easyui 分页

    3、mybatis的maper和xml文件对应,配置位置spring.xml 此为我备忘的记录

    用户5640963
  • mybatis插入数据后返回自增主键ID详解

    ​ 开发过程中我们经常性的会用到许多的中间表,用于数据之间的对应和关联.这个时候我们关联最多的就是ID,我们在一张表中插入数据后级联增加到关联表中.我们熟知...

    Dream城堡
  • 接口默认方法和 Lambda 表达式

    Java8 使开发者能够通过使用 default 关键字向接口添加非抽象方法实现,也称为虚拟扩展方法。

    happyJared
  • Java 获取对象全部属性 包括 父类属性

    异常信息 ​ 程序会告诉你无法这么转换,所以这里要注意 ​ 第二种的参数就填你要转换的数组就可以,但是他要求数组的长度是等于链表的长度的,否则会...

    庞小明
  • java使用POI处理EXCEL的核心类(二)

    接上一篇写了使用poi导出excel,今天把读取excel的方法补上,核心类如下:

    用户5640963
  • 中间件小姐姐软萌音直播—IDEA 开发部署插件

    老早就听闻 ”中间件小姐姐“ 的名气,刚好这一次遇上小姐姐做直播,嗲嗲的声音真是甜得不行,要是以后都是这种软萌音来做直播,我一定准时准点抢座位并且乖乖吃下这一剂...

    kirito-moe
  • 有关Android插件化的一些总结思考

    最近几年移动开发业界兴起了「 插件化技术 」的旋风,各个大厂都推出了自己的插件化框架,各种开源框架都评价自身功能优越性,令人目不暇接。随着公司业务快速发展,项目...

    Android技术干货分享
  • c#六大设计原则(以仪器代码为例)

    使用C#编程方式,并结合仪器(Instrument)编程,对以上设计原则进行讲解。

    CNXY
  • Java反射与动态代理

        为了更好的理解java的反射机制,最好先对java的泛型有所了解。java泛型就是参数化类型,即为所操作的数据类型指定一个参数。如果只指定了<?>,而没...

    Java栈
  • String 类和常量池

    尽量避免多个字符串拼接,因为这样会重新创建对象。如果需要改变字符串的话,可以使用 StringBuilder 或者 StringBuffer。

    happyJared

扫码关注云+社区

领取腾讯云代金券