天天看點

Junit入門到掌握-19-JUnit內建-代碼覆寫率

這篇來學習一個單元測試領域中很重要的一個概念,代碼覆寫率,這個術語,早起是在航空航天方面的軟體裡提出來的一個測試方法,100%代碼覆寫率是一個不可能完成的任務,隻是一個理想的目标。本篇先來學習代碼覆寫率和周邊幾個名詞,然後介紹一款能夠給出代碼覆寫率的插件,簡單來學習和使用下這個插件。代碼覆寫率是一個很容易在面試中被問到的問題,通過本篇學習,你起碼有一個普,不會亂扯,不懂裝懂。

1.代碼覆寫率

在設計測試用例的時候,需要參考不同覆寫率準則進行設計測試資料,以下是常見的覆寫率準則。

函數/方法覆寫率(Function coverage):代碼中覆寫測試調用每一個方法/函數。
指令/語句覆寫率(Statement coverage): 程式中每一行代碼都覆寫,其實就是全路徑覆寫。
判斷覆寫率(Decision coverage):(和分支覆寫率不同)覆寫到各種分支可能
條件覆寫率(Condition coverage):也稱為謂詞覆寫(predicate coverage),每一個邏輯運算式中的每一個條件(無法再分解的邏輯運算式)都覆寫
條件/判斷覆寫率(Condition/decision coverage):需同時滿足判斷覆寫率和條件覆寫率。
           

起碼要保證針對一個方法的單元測試用例,要保證覆寫這個方法裡面的不同行代碼,參考我在前面文章中,對于二分查找算法設計的單元測試用例方法。 https://blog.csdn.net/u011541946/article/details/93631967

2.EclEmma插件

我們在寫好單元測試用例之後,然後執行完單元測試,我們并不知道覆寫了多少代碼,還好有一些免費的工具可以幫助我們實作,跑完單元測試就得到代碼覆寫率的簡單報告,接下來介紹一個Eclipse上插件 eclemma

2.1在eclipse市場上搜尋并安裝

Junit入門到掌握-19-JUnit內建-代碼覆寫率

2.2 運作得到覆寫率報告

安裝完之後,菜單欄有以下這個圖示

Junit入門到掌握-19-JUnit內建-代碼覆寫率

我們打開測試類:TrackingServiceTests.java,然後根據上圖,選擇Coverage as - Junit Test

Junit入門到掌握-19-JUnit內建-代碼覆寫率

上面紅色表示沒有被覆寫,綠色表示覆寫,Instructions是指令的意思,也就是語句覆寫。這裡根據這張圖來解讀下我們這個被測的項目覆寫情況:語句覆寫率是80.6%, 已經覆寫了100行代碼,還有24行代碼沒有覆寫到。下面我們來看看24行代碼是隻哪些,是以我們需要打開被測項目。

Junit入門到掌握-19-JUnit內建-代碼覆寫率

紅色沒有覆寫,說明我們還需要補充這兩個方法的單元測試用例。當然,我看了被測項目全部3個java檔案,沒有數出來24個語句沒有覆寫,這個24怎麼來的卻是不清楚,隻能找到方法中标紅的就是未覆寫的語句。

以後在寫某一個class檔案中方法的單元測試用例的時候,利用這個插件,可以幫我們提高覆寫率,寫出更好覆寫率的單元測試用例。很好用,紅色表示沒有被覆寫,綠色表示覆寫,連分支和判斷覆寫都給你指出來沒有覆寫到,特别友善的一個工具。