Activity测试类有三个,包含主要的ActivityInstrumentationTestCase2和ActivityUnitTestCase,当然,如果测试单个Activity,还可以用到SingleLaunchActivityTestCase。
1.ActivityInstrumentationTestCase2
运行测试多个应用下的多个Activity,可以发送虚拟Intent,不允许使用虚拟化的Contexts或者Application.如果要向当前测试的Activity发送Intent的话,一定要在getActivity()方法之前就发送,在getActivity()方法之后发送是不起作用的。
怎么建立测试项目就不多讲了,现在看看测试该Activity的代码:
public class AutoPlayActivityTest extends ActivityInstrumentationTestCase2<AutoPlayActivity> {
ImageView imageView;
AutoPlayActivity mActivity;
String SDCARD = Environment.getExternalStorageDirectory().getAbsolutePath()+File.separator;
String[] uuuu;
public AutoPlayActivityTest() {
super("lichunan.lcn.activity.AutoPlayActivity",AutoPlayActivity.class);
}
@Override
protected void setUp() throws Exception {
// TODO Auto-generated method stub
super.setUp();
uuuu = new String[]{SDCARD+"080806012774292.jpg",SDCARD+"20110801_121726.jpg"};
Intent intent = new Intent();
intent.putExtra("allPhotoPath", uuuu);
//mActivity.setIntent(intent);
setActivityIntent(intent);
mActivity = this.getActivity();
imageView = (ImageView)mActivity.findViewById(R.id.imageView);
}
@Override
protected void tearDown() throws Exception {
super.tearDown();
}
public void testAutoPlay(){
}
}
说明一下,setUp() 是在执行所有方法之前先执行,tearDown()在执行所有方法之后再执行。
其实 testAutoPlay()也不是没用,因为只有setUp和tearDown方法的话,没有测试的方法,好像会报send 1,receive 0的错误,具体什么原因我也不知道,哪位大牛知道的,希望能够在后面留言!
另外,要注意的是,测试程序里super("lichunan.lcn.activity.AutoPlayActivity",AutoPlayActivity.class)的第一个参数一定要对应Mainfest.xml文件中 <instrumentation android:targetPackage=“”>中的字段,也就是AutoPlayActivity.class对应的包。