eclipse程式碼測試覆蓋率小工具---coverage
1.什麼是程式碼測試覆蓋率? 基於程式碼的測試覆蓋評測測試過程中已經執行的程式碼的多少,與之相對的是要執行的剩餘程式碼的多少。程式碼覆蓋可以建立在控制流(語句、分支或路徑)或資料流的基礎上。控制流覆蓋的目的是測試程式碼行、分支條件、程式碼中的路徑或軟體控制流的其他元素。資料流覆蓋的目的是通過軟體操作測試資料狀態是否有效,例如,資料元素在使用之前是否已作定義。 覆蓋率等於覆蓋面積/總面積 2.coverage如何安裝? 1.在eclipse工具欄點選help->Eclipse Marketplace。
2.輸入“coverage”搜尋,點選install。
3.當eclipse工具欄出現如圖的圖示即為安裝成功。
例項 百度中看到一個很好的例子,這裡借用一下:
public class HelloWorld { public static void main(String[] args) { new HelloWorld(); int rand = (int) (Math.random() * 100); if (rand % 2 == 0) { System.out.println("Hello, world! 0"); } else System.out.println("Hello, world! 1"); int result = rand % 2 == 0 ? rand + rand : rand * rand; System.out.println(result); } }
按照上面說的coverage使用,執行一下, 可以看到如下截圖
綠色:程式碼被執行過
黃色:程式碼部分被執行過
紅色:程式碼沒有被執行過
在下面的Coverage視窗中,可以看到程式碼測試覆蓋率。看程式碼,是取得隨機數,if判斷可能出現不滿足,可能滿足的情況, 需要多次執行該程式碼,得到多次的程式碼覆蓋率,然後吧多次得到的覆蓋率合併,得到這個類總的程式碼測試覆蓋率。 (其中有一句:new HelloWorld(); 該行程式碼是為了呼叫,該類預設的構造器。我認為:每個類都有預設的構造器,只是沒有顯示的程式碼而已,如果這裡不寫,程式碼覆蓋率會降低,第一行public class HelloWorld 綠色也會變成紅色 ) 總的統計如下:
箭頭所指為合併多次執行後的覆蓋率百分比
4、總結 1.coverage 可以測試java application程式,也可以測試JUnit 測試類 2.如果要測試整個專案中程式碼的測試覆蓋率,可能比較麻煩,至少需要吧所有程式碼的測試類執行一遍,並且把所有程式碼執行的路徑都考慮到才準確。 3.別忘記測試異常情況,空指標,或者其他異常後,執行異常程式碼,也會增加程式碼測試覆蓋率的。 4.如果得到程式碼測試覆蓋率比較高,顯而易見能看出程式碼安全性會比較能保證。