概念
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->選擇需要生成報告的測試源以及目標地址
