最開始想在Eclipse中用Cobertura,結果插件安裝不上,然後在Eclipse中用jar包試,運行出來有錯,Cobertura 好像不支持java1.8,最後用命令行成功。
下載Cobertura
下載網址:http://cobertura.github.io/cobertura/.
解壓下載的壓縮文件。如圖
準備工作
- 在eclipse中新建一個java項目,添加被測文件,利用evosuite插件生成測試數據,移動到和被測文件同一包下,修改錯誤。如圖
- 進入該項目的工作空間,將bin和src文件複製到一個新的文件夾cobertura,並將src文件移動到bin目錄下。
- 將前面解壓後的cobertura-2.1.1文件夾放入cobertura目錄下,並將cobertura-2.1.1下的lib文件夾拷貝到cobertura/bin目錄下。如圖
測試覆蓋率
- 生成代碼覆蓋率的代碼和cobertura.ser文件。
到bin目錄下,運行命令:
F:\cobertura\cobertura-2.1.1\cobertura-instrument.bat --destination instrumented source
生成instrumented文件夾和cobertura.ser文件,instrumented中包含着class文件,如圖
- 根據cobertura.ser文件運行測試
繼續運行命令:
java -cp lib/junit-4.11.jar;lib/hamcrest-core-1.3.jar;lib/cobertura-2.1.1.jar;lib/slf4j-api-1.7.5.jar;instrumented;.; -Dnet.sourceforge.cobertura.datafile=cobertura.ser org.junit.runner.JUnitCore source.cobertura_ESTest
- 生成報告
繼續運行命令:
F:\cobertura\cobertura-2.1.1\cobertura-report.bat --format html -datafile=cobertura.ser --destination report src
此時,bin目錄下自動生成report文件夾,點擊裏面的index.html就可以看到覆蓋率。如圖
點擊每個類進去,可以看到每條語句的執行情況。
[參考文檔]
關於如何使用Cobertura的命令行方式測試覆蓋率,還可以參考以下博客
https://blog.csdn.net/zxdfc/article/details/52198202.
https://blog.csdn.net/lyliyongblue/article/details/44708541.
http://www.itkeyword.com/doc/2634260868462837549/tomcat-command-reportclasshtml.
Cobertura 好像不支持java1.8https://blog.csdn.net/AlbertFly/article/details/89319148#commentBox.