使用 Eclipse 或 Google 的 ADT Bundle 集成開發環境進行 android 單體測試時,受開發工具的局限,目前暫時無法直接使用常規的插件(例如:eclemma,Clover Eclipse Plugin 等)來獲取單體測試程式碼覆蓋率。一般來說使用以下方法來實現程式碼覆蓋率的查看。
方法 1:改變測試程式碼繼承父類為 TestCase 而非 AndroidTestCase。這種方法只能解決不依賴於 Android SDK 源程式碼的單體測試。 方法 2:使用 Android SDK 中集成的 Emma 功能,使用 ant 進行命令行編譯與單體測試。通過以下腳本實現。 這裡假設 Eclipse 的專案名稱為 MyProject, 檔案路徑如下 ./ #專案主目錄 ./src #APP 專案主目錄 ./test #APP 測試專案主目錄
MacOS/Linux Shell
# JAVA 根據實際情況設置,以下為預設安裝路徑
#Mac OS X
#export JAVA_HOME=/Library/Java/Home;
#Linux JDK
#export JAVA_HOME=/usr/local/jdk1.6.0_11;
#Linux JRE
#export JAVA_HOME=/usr/lib/jvm/jre6;
ANT 根據實際情況設置,以下為預設安裝路徑#
#Mac OS X
#export ANT_HOME=/usr/share/ant;
#Linux
#export ANT_HOME=/usr/local/ant;
#export PATH=${PATH}:${ANT_HOME}/bin;
Android SDK 安裝位置#
#export ANDROID_HOME=~/android-sdk-macosx;
#export PATH=${PATH}:${ANDROID_HOME}/tools;
#export PATH=${PATH}:${ANDROID_HOME}/platform-tools;
#classpath 將 emma 添加到 classpath 中去
#export CLASSPATH=.:${JAVA_HOME}/lib/dt.jar:${JAVA_HOME}/lib/tools.jar:${ANDROID_HOME}/tools/lib/emma.jar;
#android platform version
export PROJECT_NAME=MyProject
export ANDROID_VER=android-13
#to parent folder
cd ..
convert to ant project#
android update project -p src -n ${PROJECT_NAME} -t ${ANDROID_VER}
convert to ant test project#
android update test-project -m ../src -p test
run test#
cd test
ant clean emma debug install test
open report#
open ./bin/coverage.html
Windows Batch
:: JAVA
:: set JAVA_HOME=C:\Java\jdk1.6.0_11
:: ANT
:: set ANT_HOME=C:\Ant
:: set PATH=%PATH%;%ANT_HOME%/bin
:: Android
:: set ANDROID_HOME=C:\android-sdk-windows
:: set PATH=%PATH%;${ANDROID_HOME}\tools
:: set PATH=%PATH%;${ANDROID_HOME}\platform-tools
:: classpath
:: set CLASSPATH=%CLASSPATH%;%JAVA_HOME%\lib\dt.jar;%JAVA_HOME%\lib\tools.jar;%ANDROID_HOME%\tools\lib\emma.jar
:: android platform version
set PROJECT_NAME=MyProject
set ANDROID_VER=android-13
:: to parent folder
cd ..
:: convert to ant project
call android.bat update project -p src -n %PROJECT_NAME% -t %ANDROID_VER%
:: convert to ant test project
call android.bat update test-project -m ..\src -p test
:: run test
cd test
call ant.bat clean emma debug install test
:: open report
explorer .\bin\coverage.html