怎么使用Jacoco统计服务端代码覆盖率,相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。
使用 Python + Coverage 来统计测试用例的代码覆盖率
Jacoco 针对 Java 语言的一款开源的覆盖率工具,可以嵌入到 Maven、Gradle 中,提供多种尺度的覆盖率计数器,比如:类覆盖、行覆盖、分支覆盖等
本篇将聊聊服务端代码的覆盖率统计,以 Spring Boot 项目为例,使用 Jacoco + junit 来统计服务端的代码覆盖率
首先使用 IDEA 创建一个 Spring Boot 项目( Maven ),以之前 构建 RESTFul API 的项目 代码为基础
然后,配置 pom.xml 文件,为当前项目新增 jacoco 依赖 JAR 包
<!--pom.xml--><!--jacoco依赖--><dependency> <groupId>org.jacoco</groupId> <artifactId>jacoco-maven-plugin</artifactId> <version>0.8.5</version></dependency>
jacoco 版本可以参考:
https://www.eclemma.org/jacoco/index.html
接着,配置 Jacoco 插件及相关的 goal,使用 includes 和 excludes 两个关键字设定包含或排除的类路径
比如:这里只统计 com.xingag.api.service 下面的类
<!--pom.xml--><!--配置Jacoco插件信息--><plugin> <groupId>org.jacoco</groupId> <artifactId>jacoco-maven-plugin</artifactId> <version>0.8.5</version> <configuration> <includes> <!--只包含com/xingag/api/service/下面的类--> com/xingag/api/service/* </includes> </configuration> <executions> <execution> <id>prepare-agent</id> <goals> <goal>prepare-agent</goal> </goals> </execution> <execution> <id>check</id> <goals> <goal>check</goal> </goals> </execution> <execution> <id>report</id> <phase>prepare-package</phase> <goals> <goal>report</goal> </goals> </execution> </executions> </plugin>
最后,点击右上角的 Maven 同步,下载依赖并配置项目
//ScoreServiceImpl.javapackage com.xingag.api.service;//被测代码public class ScoreServiceImpl { public String getScoreLevel(int score) { String result; if (score > 90) { result = "优秀"; } else if (score < 90 && score >= 75) { result = "良好"; } else if (score >= 60) { result = "合格"; } else if (score > 40) { result = "不合格"; } else if (score >= 0) { result = "差"; } else { result = "成绩格式不正确"; } return result; }}
//ScoreTests//测试类@RunWith(SpringRunner.class)@SpringBootTestpublic class ScoreTests { ...}
//ScoreTests.java//定义测试方法//成绩优秀@Testpublic void testLevelA() { Assert.assertEquals(RESULT_LEVEL[0], scoreService.getScoreLevel(95));}//成绩良好@Testpublic void testLevelB() { Assert.assertEquals(RESULT_LEVEL[1], scoreService.getScoreLevel(80));}//成绩及格@Testpublic void testLevelC() { Assert.assertEquals(RESULT_LEVEL[2], scoreService.getScoreLevel(70));}
用浏览器打开统计报告文件夹中的 index.html 文件,可以很直观的查看单元测试覆盖率及对应测试类的具体覆盖范围
看完上述内容,你们掌握怎么使用Jacoco统计服务端代码覆盖率的方法了吗?如果还想学到更多技能或想了解更多相关内容,欢迎关注亿速云行业资讯频道,感谢各位的阅读!
亿速云「云服务器」,即开即用、新一代英特尔至强铂金CPU、三副本存储NVMe SSD云盘,价格低至29元/月。点击查看>>
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。
原文链接:https://my.oschina.net/u/1755412/blog/4444340