jacoco + eclipse單元測試覆蓋率


概念

Jacoco:JaCoCo是一個開源的覆蓋率工具,它針對的開發語言是java,其使用方法很靈活,可以嵌入到Ant、Maven中;可以作為Eclipse插件,可以使用其JavaAgent技術監控Java程序等等。 
插樁:程序插樁,它是在保證被測程序原有邏輯完整性的基礎上在程序中插入一些探針(又稱為“探測儀”,本質上就是進行信息采集的代碼段,可以是賦值語句或采集覆蓋信息的函數調用),通過探針的執行並拋出程序運行的特征數據,通過對這些數據的分析,可以獲得程序的控制流和數據流信息,進而得到邏輯覆蓋等動態信息,從而實現測試目的的方法。 
On-the-fly插樁:JVM中通過-javaagent參數指定特定的jar文件啟動Instrumentation的代理程序,代理程序在通過Class Loader裝載一個class前判斷是否轉換修改class文件,將統計代碼插入class,測試覆蓋率分析可以在JVM執行測試代碼的過程中完成。 
Offline模式:在測試前先對文件進行插樁,然后生成插過樁的class或jar包,測試插過樁 的class和jar包后,會生成動態覆蓋信息到文件,最后統一對覆蓋信息進行處理,並生成報告。

注入方法

比較有特色的幾個方法: 
Instrumentation 注入 
Byte Code 字節碼注入(在Byte Code時使用的ASM技術修改字節碼方法,可以修改Jar文件、class文件字節碼文件,通過一個Probe探針的方式來注入,程序執行后可以被記錄,它不會改變原有代碼的行為) 
On-the-fly 在線模式 
Offline 離線模式

Eclipse EclEmma Plugin

目前支持的啟動類型:

Local Java application java程序(有main) 
Eclipse/RCP application 桌面應用程序 
Equinox OSGi framework 
JUnit test 單元測試 
TestNG test 
JUnit plug-in test 
JUnit RAP test 
SWTBot test 
Scala application

安裝

Eclipse:Help->Eclipse Marketplace->搜索EclEmma 
這里寫圖片描述

java application覆蓋測試

點擊工具欄中的按鈕這里寫圖片描述(在此之前可能需要自己先運行一遍代碼)。測試結果如下: 
這里寫圖片描述 
紅色:測試未覆蓋 
黃色:測試部分覆蓋(通常是if和switch) 
綠色:測試已覆蓋 
查看測試率,Window->Show View->Other->Java->Coverage 
這里寫圖片描述
通常情況下,Coverage顯示的是單次的覆蓋測試結果,如果想常看多次的合並結果,點擊這里寫圖片描述 
這里寫圖片描述
Project Explorer中查看覆蓋率,Window->Preferences->General->Appearence->Label Decorations,選中Java Code Coverage。 
這里寫圖片描述

JUnit Test覆蓋測試

右鍵一個需要測試的文件,new->JUnit->JUnit Test Case,完成一個測試類。選擇測試類啟動覆蓋測試。結果如圖: 
這里寫圖片描述 
這里寫圖片描述

生成覆蓋率報告

File->Export->Java->Coverage Report->選擇需要生成報告的測試源以及目標地址這里寫圖片描述


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM