首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 移动开发 > Android >

Android中编纂Activity单元测试程序提高开发效率

2012-06-30 
Android中编写Activity单元测试程序提高开发效率Android开发中,大型工程往往存在很多的Activity,这些Activ

Android中编写Activity单元测试程序提高开发效率

Android开发中,大型工程往往存在很多的Activity,这些Activity互相关联,复杂度较高。我们在开发时需要经常对界面以及交互等进行测试,每次测试运行程序后,往往需要一层一层的进入我们想看的Activity才能测试。这个过程中,可能需要输入用户名和密码,或者需要从Gallery中选择一幅图片等。因此,大型工程的每次测试都需要较长的时间,导致开发效率降低。针对这种情况,我们可以只打开某个Activity以便于进行测试,具体方法可以使用Android Test Project。

?

首先,要新建一个Test Project,Eclipse中选择File->New->Project->Android Test Project,点击Next,输入测试程序的名称,如PictureTest,点击Next。选择一个需要测试的Android工程(该工程必须是已经打开的Android Project),点击Next,然后选择测试工程的SDK版本Finish即可。这样就建立好了空的测试工程。

?

之后,需要新建一个单元测试类。对src中的空报名点右键,选择New->class,在Name中填写类名,如PictureActivityTest,Finish即可。

?

准备工作做完,可以开始编写针对Activity界面的测试类了,满足之前要求的Activity测试类需要继承ActivityInstrumentationTestCase2这个类,在<>中填入待测试的Activity类名,如PictureActivity。之后添加构造函数(自动生成即可)。


与所有单元测试程序一样,可以重写setUp()和tearDown()方法,以便于在测试前和测试后进行一些工作。重点是MediumTest,我们需要在MediumTest的时候打开这个Activity。很多时候打开Activity时,我们需要传入相应的Intent,比如显示图片的Activity,我们就需要通过Intent传入图片的Uri。编写好Intent之后,可以通过setActivityIntent(Intent intent)方法装入写好的Intent。之后就可以通过getActivity()方法打开Activity。为了防止测试程序在我们还没有看到效果的时候就运行结束,可以通过信号量CountDownLatch对象进行等待控制。这样就可以完整的对我们需要的Activity单独测试了。

?

?

public class PictureTestActivity extendsActivityInstrumentationTestCase2<PictureActivity> {private final static String TAG = "PictureTestActivity";public PictureTestActivity(Class<PictureActivity> activityClass) {super(activityClass);// TODO Auto-generated constructor stub}@Overrideprotected void setUp() throws Exception {super.setUp();}@MediumTestpublic void testProcess() throws Throwable {Log.d(TAG, "testProcess begin.");final CountDownLatch signal = new CountDownLatch(1);setActivityIntent(getNeededIntent());getActivity();signal.await();}@Overrideprotected void tearDown() throws Exception {super.tearDown();}private Intent getNeededIntent() {Intent i = new Intent();i.setData(Uri.fromFile(new File("/mnt/sdcard/pics/skin1.jpg")));return i;}}
?

?

热点排行