天天看點

gtest and lcov

要想保持測試的完整性,需要将gtest與lcov配合使用,方能更好地測試源碼的品質。

一、下載下傳lcov源碼

源碼下載下傳連結:https://sourceforge.net/projects/ltp/files/Coverage%20Analysis/LCOV-1.13/

二、解壓源碼

進入到解壓檔案夾,執行指令“make install”安裝lcov

三、編譯中增加編譯參數:-fprofile-arcs -ftest-coverage

(注意:這裡是兩個參數,分别是:-fprofile-arcs 和 -ftest-coverage)

編譯後, 會為每個源檔案生成.gcno結尾的檔案。

四、編譯後運作可執行程式./run_test

運作後,會為每個源檔案,生成gcda結尾的檔案。

五、使用lcov收集統計資料做成圖形化顯示的的資料,可用于分析測試覆寫率

lcov -c -o test.info -d .           
  1. -c :捕捉覆寫率資料
  2. -d :表示的是目錄,也就是gcno和gcda目錄。使用lcov統計覆寫率,必須将gcno和gcda放在同一個目錄,并且有源代碼,且源代碼的目錄和編譯時的目錄一樣,否則不能生成。
  3. -o :表示輸出檔案,以.info結尾,用來存儲資料

六、lcov檔案過濾

    某些情況下,需要屏蔽第三方庫的覆寫率計算或者隻統計某個檔案夾下的覆寫率計算,就需要用到lcov的檔案過濾功能。 

  • 移除制定目錄

       需要用到--remove參數,以删除include目錄下所有檔案資訊為例 :

     lcov --remove all.info '*/include/*' '' -o result.info

      all.info  總的覆寫率資訊     result.info 篩選後的覆寫率資訊

  • 篩選固定目錄

       需要用到--extract參數,以指定samples目錄為例:

       lcov --extract all.info '*/samples/*' -o result.info

     all.info  總的覆寫率資訊     result.info 篩選後的覆寫率資訊

七、擷取html檔案可視化輸出

genhtml test.info -o output/            

output是一個目錄,index.html為導航檔案,使用 web 浏覽器打開 index.html 檔案檢視代碼覆寫結果。可看到各個檔案夾下源碼檔案的測試覆寫率,以下是篩選了排除“*/include/*”目錄下檔案的測試覆寫率資訊:

gtest and lcov

點選進去,可看到各個檔案被測試的覆寫率情況,點選到檔案中,每個檔案中哪一行測試到,哪一行沒有測試到。