開發問:你寫的東西(自動化)覆蓋了我多少的代碼量?
恩,我思考下....
不妨試試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語句的分支覆蓋情況,計算一個方法里面的總分支數,確定執行和不執行的 分支數量。