代碼測試覆蓋率

寫在前頭

看了阿里開發手冊 “單元測試第八條的推薦” 

單元測試的基本目標:語句覆蓋率達到 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%

不要對單元測試存在如下誤解:

  • 那是測試同學乾的事情。本文是開發手冊,凡是本文內容都是與開發同學強相關的。

  • 單元測試代碼是多餘的。汽車的整體功能與各單元部件的測試正常與否是強相關的。

  • 單元測試代碼不需要維護。一年半載後,那麼單元測試幾乎處於廢棄狀態。

  • 單元測試與線上故障沒有辯證關係。好的單元測試能夠最大限度地規避線上故障。

 

原文出處:https://www.cnblogs.com/wenbochang/p/10436574.html

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章