zoukankan      html  css  js  c++  java
  • 代码测试覆盖率

    写在前头

    看了阿里开发手册 “单元测试第八条的推荐” 

    单元测试的基本目标:语句覆盖率达到 70% ;核心模块的语句覆盖率和分支覆盖率都
    要达到 100%

    之前在公司实习的时候,组内一个老哥对这个测试十分的看重,几乎要达到100%的覆盖面积。

    我当时特别的不是很理解,感觉自己测试下每个分支就好了,不用搞的那么复杂,后期又难以维护。

    后来渐渐发觉,这是对自己代码的不负责任,也是对用户不负责任

    Jacoco代码覆盖率

    JaCoCo is a free code coverage library for Java, which has been created by the EclEmma team based on the lessons learned from using and integration existing libraries for many years.

    JaCoCo是一个免费的Java代码覆盖库,由EclEmma团队根据多年来使用和集成现有库的经验教训创建。

    这是其官网介绍,也就是说,这个插件可以检测到你写了多少个测试。

    而这些测试又对你的代码覆盖了多少

    Jacoco用法

    首先在Maven中引入一下插件

     1 <!-- 代码测试覆盖率 -->
     2 <plugin>
     3     <groupId>org.jacoco</groupId>
     4     <artifactId>jacoco-maven-plugin</artifactId>
     5     <version>0.7.8</version>
     6     <executions>
     7         <execution>
     8             <id>prepare-agent</id>
     9             <goals>
    10                 <goal>prepare-agent</goal>
    11             </goals>
    12         </execution>
    13         <execution>
    14             <id>report</id>
    15             <phase>prepare-package</phase>
    16             <goals>
    17                 <goal>report</goal>
    18             </goals>
    19         </execution>
    20     </executions>
    21 </plugin>

    然后Maven执行  mvn clean install -Dmaven.test.failure.ignore=true

    后面红色划重点,意思是:如果在单元测试中,出现了错误,那么忽略他,继续执行下去。

    这样的好处是,Maven可以执行完,然后生成代码覆盖率,否则一报错,就不会生成代码覆盖率了。

    Jacoco生成内容

    我们可以在你的项目中 /target/site/jacoco/index.html  找到代码覆盖率

    打开后如上图,红色代码没有覆盖到的代码,绿色代表已经覆盖到的代码。

    因为我这个是学习Jacoco,就写了一个测试service的测试用例,所以覆盖的很少。

    可以从图中看到,service业务层覆盖率已经到达了69%。我们点进去再看看

    我们可以很清晰的看到,哪一个类被覆盖到了,哪一个类没有被覆盖到,很好的提醒我们,接下来的测试案例应该怎么写。

    点进去甚至可以看到哪一行没有被覆盖到,十分的强大。

    附录

    单元测试的基本目标:语句覆盖率达到 70% ;核心模块的语句覆盖率和分支覆盖率都 要达到 100%

    不要对单元测试存在如下误解:

    • 那是测试同学干的事情。本文是开发手册,凡是本文内容都是与开发同学强相关的。

    • 单元测试代码是多余的。汽车的整体功能与各单元部件的测试正常与否是强相关的。

    • 单元测试代码不需要维护。一年半载后,那么单元测试几乎处于废弃状态。

    • 单元测试与线上故障没有辩证关系。好的单元测试能够最大限度地规避线上故障。

  • 相关阅读:
    题解-CF617E XOR and Favorite Number
    题解-P3174 [HAOI2009]毛毛虫
    数论相关
    力扣 403 青蛙过河 搜索 || 动态规划
    【转载】剑指Offer 26 树的子结构
    三元组 蓝桥杯
    剑指 Offer 14- I. 剪绳子
    【转载】剑指 Offer 43. 1~n整数中1出现的次数
    n个节点的二叉树有几种情况
    1044. 最长重复子串 二分 + Rabin-Karp | | 后缀数组
  • 原文地址:https://www.cnblogs.com/wenbochang/p/10436574.html
Copyright © 2011-2022 走看看