天天看點

代碼覆寫度工具OpenCppCoverage(cpp)、EclEmma(java)、Coverage(python)使用一、OpenCppCoverage(cpp)二、EclEmma(java)三、Coverage(python)

一、OpenCppCoverage(cpp)

OpenCppCoverage是一個運作在windows上的程式,其不是在編譯時進行插樁,而是在運作時,是以保證了代碼和測試的一緻性。 參考文檔:https://github.com/OpenCppCoverage/OpenCppCoverage

1、指令行方式

(1)下載下傳和安裝

下載下傳位址:https://github.com/OpenCppCoverage/OpenCppCoverage/releases 安裝方法:正常安裝,沒有什麼注意事項(安裝時勾選添加環境變量)

(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的報告,如下圖:

代碼覆寫度工具OpenCppCoverage(cpp)、EclEmma(java)、Coverage(python)使用一、OpenCppCoverage(cpp)二、EclEmma(java)三、Coverage(python)

二、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,執行完畢,檢視運作結果,如下圖:

代碼覆寫度工具OpenCppCoverage(cpp)、EclEmma(java)、Coverage(python)使用一、OpenCppCoverage(cpp)二、EclEmma(java)三、Coverage(python)

Step3:導出報告:右擊Project name – > Export --> 搜尋CoverageReport --> 點選CoverageReport --> 選擇存儲路徑即可,導出的html檔案如下圖:

代碼覆寫度工具OpenCppCoverage(cpp)、EclEmma(java)、Coverage(python)使用一、OpenCppCoverage(cpp)二、EclEmma(java)三、Coverage(python)

三、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
           

具體指令行截圖如下:

代碼覆寫度工具OpenCppCoverage(cpp)、EclEmma(java)、Coverage(python)使用一、OpenCppCoverage(cpp)二、EclEmma(java)三、Coverage(python)

html檔案如下圖所示:

代碼覆寫度工具OpenCppCoverage(cpp)、EclEmma(java)、Coverage(python)使用一、OpenCppCoverage(cpp)二、EclEmma(java)三、Coverage(python)

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)”錯誤。

參考文章:

http://www.cnblogs.com/zoro-robin/p/5612472.html

http://coverage.readthedocs.io/en/latest/

http://www.cnblogs.com/coderzh/p/OpenCppCoverage.html

http://www.cnblogs.com/Ming8006/p/5811425.html

繼續閱讀