Home > 语言编程 > [Android]使用Emma进行单体测试代码覆盖率分析

[Android]使用Emma进行单体测试代码覆盖率分析

使用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

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
# 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

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
::  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
Categories: 语言编程 Tags: , , ,
  1. itdor
    May 20th, 2014 at 18:38 | #1

    博主你好,看了你的帖子很受教,但是我在Linux中运行脚本的时候出现了错误,BUILD FAILED。想请教一下您,不知方便不方便

    • 李大仁
      May 21st, 2014 at 09:32 | #2

      感谢您持续关注,已将基本操作步骤发送到您的留言邮箱,希望可以帮助到您。

  2. itdor
    May 27th, 2014 at 13:44 | #3

    @李大仁
    谢谢您的回复,已成功解决问题并执行成功。

  1. July 18th, 2014 at 11:03 | #1