Android Junit 是android的测试工程, 和emma配合使用可以测试 java 代码的覆盖率。
1. 创建Android Test Project
会提示选择要测试的android 工程。 Andoid test 工程由两种方式创建, 一种是在被测试的工程内部创建, 右键--〉 New --〉JUnit Test case; 另一种是创建单独的Test 工程,选择被测试 的android工程,这里要使用第二种方式。
2. 添加Test case
SetUp 是初始化方法, 用来创建一些全局的环境,会首先执行。 测试用例就是添加一些 public方法。
Sample:
public class TestLivePlayer extends InstrumentationTestCase {
//private LivePlayerControl playerctrl=new LivePlayerControl( );
//private final String vpath = "rtmp://rtmpexo1.wasu.cn/live4/zjws";
private final String vpath = "/sdcard/video.mp4";
LivePlayerControl playerctrl = new LivePlayerControl( );
@Override
protected void setUp() throws Exception {
// TODO Auto-generated method stub
super.setUp();
playerctrl = new LivePlayerControl( );
playerctrl.setControllerListener(null);
playerctrl.setVideoPath(vpath);
}
public void teststart() throws InterruptedException{
Thread thread = new Thread()
{
@Override
public void run() {
playerctrl.start();
}
};
thread.start();
SystemClock.sleep(1000*30) ;
int retval = playerctrl.returnvalue();
playerctrl.exit();
assertEquals(Constants.ISPLAYING_2, retval);
}
3. Ant Emma 测试代码覆盖率
LivePlayerTest ----> LivePlayer -------> video_render
- #update project is to test
- #ant unit test project
or //这里要使用相对路径或绝对路径
cd LivePlayerTest
android update test-project -m ..\LivePlayer -p ..\LivePlayerTest
- #run emma
- #result
Q&A
1. 提示ant不能解释build.xml
更新ant版本2. 提示LivePlayer的build.xml没有各种Target
add these lines to build.xml<property file="local.properties" />
<property file="project.properties" />
<import file="${sdk.dir}/tools/ant/build.xml" />
2. 提示GL2JNIActivity,video-render下的build.xml没有各种target
add these lines to build.xml<property file="local.properties" />
<property file="project.properties" />
<import file="${sdk.dir}/tools/ant/build.xml" />
adb运行方式是早期SDK提供的方法,新方法使用ant
#run run test with adb,generate coverage file
adb shell am instrument -w com.baidu.lightapp.plugin.videoplayer.coreplayer.test/android.test.InstrumentationTestRunner -e coverage true
reference:
https://wiki.jenkins-ci.org/display/JENKINS/Building+an+Android+app+and+test+project