Jacoco统计白盒测试覆盖率(基于maven)

开发问:你写的东西(自动化)覆盖了我多少的代码量?

恩,我思考下....

不妨试试jacoco吧,下面就来看看


原理: 自动插桩

JVM中通过-javaagent参数指定特定的jar文件启动代理程序,代理程序在通过Class Loader装载一个class前判断是否转换修改class文件,将统计代码插入class,测试覆盖率分析可以在JVM执行测试代码的过程中完成。

效果:

 

基于maven,在server test里面编写白盒测试代码,在pom文件加入下面的build信息,run as install

<build>    
    <plugins> 
    
     <plugin>
       <groupId>org.apache.maven.plugins</groupId>
       <artifactId>maven-surefire-plugin</artifactId>
       <configuration>
         <includes>
            <include>**/*BaseDaoTest.java</include>        
         </includes>
         <excludes>
           <exclude>**/Abstract*.java</exclude>
         </excludes>
       </configuration>
     </plugin> 
    
    <plugin>
    <groupId>org.jacoco</groupId>
    <artifactId>jacoco-maven-plugin</artifactId>
    <version>0.5.3.201107060350</version>
    <executions>
    
     <execution>
      <goals>
       <goal>
        prepare-agent
       </goal>
      </goals>
     </execution>
     
     <execution>
      <id>JaCoCo Report</id>
      <phase>prepare-package</phase>
      <goals>
       <goal>
        report
       </goal>
      </goals>
     </execution>
     
    </executions>
   </plugin>
   </plugins> 
  </build> 

 操作:

1.写好单元测试代码

2.上面的maven build,获取覆盖率报告

具体报告,可以帮助我们分析哪里覆盖率做的不好,去优化我们的白盒测试代码,覆盖:

target/site/jacoco/index.html

行覆盖率:度量被测程序的每行代码是否被执行,判断标准行中是否至少有一个指令被执行。
类覆盖率:度量计算class类文件是否被执行。
分支覆盖率:度量if和switch语句的分支覆盖情况,计算一个方法里面的总分支数,确定执行和不执行的 分支数量。

 

posted @ 2017-01-22 13:30  q55091  阅读(2539)  评论(0编辑  收藏  举报