測試進(jìn)行代碼單元測試時,都應(yīng)該執(zhí)著于實現(xiàn)100%的覆蓋率蒋院。代碼覆蓋率越高亏钩,并不能說明質(zhì)量就越好,但是代碼覆蓋率很低欺旧,那么質(zhì)量的風(fēng)險肯定高姑丑。
I’m not a great programmer; I’m just a good programmer with great habits. --Kent Beck
今天簡單介紹下Java的一款開源的覆蓋率工具JaCoCo。
官網(wǎng):https://www.jacoco.org/jacoco/
直接代碼中進(jìn)行配置:https://github.com/supremecsp/geektime-todo
例子由極客時間《程序員的測試課》課程源碼進(jìn)行調(diào)整
個人習(xí)慣用maven開發(fā)辞友,調(diào)試工具idea栅哀;
官網(wǎng)配置:https://www.jacoco.org/jacoco/trunk/doc/maven.html
<plugin>
<groupId>org.jacoco</groupId>
<artifactId>jacoco-maven-plugin</artifactId>
<version>0.8.4</version>
<executions>
<execution>
<goals>
<goal>prepare-agent</goal>
</goals>
</execution>
<!-- attached to Maven test phase -->
<execution>
<id>report</id>
<phase>test</phase>
<goals>
<goal>report</goal>
</goals>
</execution>
</executions>
</plugin>
配置完成先clean再點test
編譯完成在target找到index.html文件
瀏覽器打開即可看到覆蓋率信息
Jacoco從多種角度對代碼進(jìn)行了分析,包括指令(Instructions称龙,C0 Coverage)昌屉,分支(Branches,C1 Coverage)茵瀑,圈復(fù)雜度(Cyclomatic Complexity)间驮,行(Lines),方法(Methods)马昨,類(Classes)竞帽。
點進(jìn)去類可能會有三種顏色
紅色:無覆蓋,沒有分支被執(zhí)行鸿捧。
黃色:部分覆蓋屹篓,部分分支被執(zhí)行。
綠色:全覆蓋匙奴,所有分支被執(zhí)行堆巧。
具體字段代表可看:http://www.reibang.com/p/4c728b39185e
代碼有時還是會出現(xiàn)無法通過測試的第三方代碼/異常,如圖所示:你無法模擬出IO異常泼菌;
此時由于其它程序庫造成難以測試的問題谍肤,我們可以做一層層薄薄的封裝,然后哗伯,在覆蓋率檢查中忽略它荒揣。封裝和忽略,缺一不可焊刹。
忽略的話pom的plugin中做下配置即可(其他的操作參數(shù)自行瀏覽官網(wǎng))
<configuration>
<excludes>
<exclude>com/github/dreamhead/todo/util/**/*</exclude>
<exclude>**/*Bootstrap.*</exclude>
</excludes>
</configuration>
只想查看某個測試類覆蓋率的話系任,idea可在Run/Debug Configurations中配置Code Coverage為JaCoCo恳蹲,Run XXX with Coverage啟動,結(jié)構(gòu)down出來即可看到覆蓋率