开发问:你写的东西(自动化)覆盖了我多少的代码量?
恩,我思考下....
不妨试试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语句的分支覆盖情况,计算一个方法里面的总分支数,确定执行和不执行的 分支数量。