程式碼覆蓋度工具OpenCppCoverage(cpp)、EclEmma(java)、Coverage(python)使用
一、OpenCppCoverage(cpp)
1、命令列方式
(1)下載和安裝
(2)執行方法
假設已有程式MatrixUDG,生成的可執行檔名稱為:MatrixUDG.exe,存放目錄:F:\code\Cpp\VS\DailyPractice\MatrixUDG\Debug(exe檔案在程式執行之後便會自動生成),則執行步驟為:
Step1:開啟命令列提示符
Step2:將當前目錄切換到F:\code\Cpp\VS\DailyPractice\MatrixUDG\Debug
Step3:使用下列命令:
OpenCppCoverage.exe --sources F:\code \Cpp\VS\DailyPractice\MatrixUDG\Debug -- MatrixUDG.exe
Step4:自動生成的CoverageReport存放在當前目錄。
注:遺留問題:生成的html檔案顯示不出詳細內容,只有title
2、作為VisualStudio外掛
(1)外掛安裝
開啟VisualStudio –> 工具 –> 擴充套件和更新 –> 聯機 –> 右上角輸入OpenCppCoverage,在下面的結果會出現“OpenCppCoverage Plugin”點選安裝即可(安裝中需要將VisualStudio重啟)
(2)執行
程式寫好,編譯執行之後,點選“工具 –> Run OpenCppCoverage”,程式執行,將命令列視窗關掉,則程式碼會出現紅色或者綠色的陰影,下面會出現Coverage的報告,如下圖:
二、EclEmma(java)
EclEmma是一款整合在Eclipse上的測試程式碼覆蓋度的外掛。
(1)下載和安裝
下載地址:https://sourceforge.net/projects/eclemma/ ,解壓到[eclipse_home]\dropins\中。
安裝(我的版本是Eclipse neon.3):開啟eclipse –> help –> install new software –> add –> local –> 選擇你下載的eclemma,點OK就可以安裝,然後按提示重啟。
(2)執行
Step1:程式碼寫好之後,執行java程式
Step2:右擊程式碼 –> Coverage As –> Java Application,執行完畢,檢視執行結果,如下圖:
Step3:匯出報告:右擊Project name – > Export –> 搜尋CoverageReport –> 點選CoverageReport –> 選擇儲存路徑即可,匯出的html檔案如下圖:
三、Coverage(python)
Coverage支援分支覆蓋。
安裝方法:
下載地址:https://pypi.python.org/pypi/coverage
安裝方法:直接安裝,安裝之後將E:\Anaconda\Scripts(如果沒有安裝Anaconda,這個目錄應該在python的安裝目錄下)新增到path環境變數中。
1、命令列方式
命令詳見: http://coverage.readthedocs.io/en/latest/cmd.html
關鍵命令如下:
這裡以calculator.py為例,這個py檔案目錄為:F:\code\python\workspace1\testCoverage\
(1)run
將當前目錄切換至F:\code\python\workspace1\testCoverage\,輸入下列命令:
coverage run calculator.py
執行完之後,會自動生成一個覆蓋率統計結果檔案,其後綴名為.coverage。
(2)report
有個.coverage檔案,可以使用report引數將統計結果在命令列中打印出來,具體命令如下:
coverage report
(3)html
html引數可以生成html測試報告,具體命令如下:
coverage html -d covhtml
具體命令列截圖如下:
html檔案如下圖所示:
1、程式碼API呼叫方式
使用如下程式碼:
import coverage
cov = coverage.coverage()
cov.start()
#coding
cov.stop()
cov.report()
cov.html_report(directory='covhtml')
注:遺留問題:使用coverage.py API方法呼叫不成功,總是提示“Coverage.py warning: No data was collected. (no-data-collected)”錯誤。