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包後,會生成動態覆蓋信息到文件,最後統一對覆蓋信息進行處理,並生成報告。java
比較有特點的幾個方法:
Instrumentation 注入
Byte Code 字節碼注入(在Byte Code時使用的ASM技術修改字節碼方法,能夠修改Jar文件、class文件字節碼文件,經過一個Probe探針的方式來注入,程序執行後能夠被記錄,它不會改變原有代碼的行爲)
On-the-fly 在線模式
Offline 離線模式app
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
工具
點擊工具欄中的按鈕(在此以前可能須要本身先運行一遍代碼)。測試結果以下:
紅色:測試未覆蓋
黃色:測試部分覆蓋(一般是if和switch)
綠色:測試已覆蓋
查看測試率,Window->Show View->Other->Java->Coverage
一般狀況下,Coverage顯示的是單次的覆蓋測試結果,若是想常看屢次的合併結果,點擊
Project Explorer中查看覆蓋率,Window->Preferences->General->Appearence->Label Decorations,選中Java Code Coverage。
單元測試
右鍵一個須要測試的文件,new->JUnit->JUnit Test Case,完成一個測試類。選擇測試類啓動覆蓋測試。結果如圖:
測試
File->Export->Java->Coverage Report->選擇須要生成報告的測試源以及目標地址ui