因为程序测试方面是程序开发中非常重要的一方面,这里结合官方教程,来了解下Android程序是怎样进行测试的。
Android开发环境集成了一个容易使用但同时很强大的程序测试框架,通过这个框架,可以测试程序的各个方面,比如测试程序的Activity、Content Provider、Service等。
测试方式也可以根据开发环境而有不同的选择,可以选择在Eclipse中配合使用ADT插件工具进行测试,也可以使用命令行进行测试。
下面结合开发文档中的“Hello,Testing”来介绍下在Eclipse中配合使用ADT插件和其他的SDK工具如何进行程序测试的,这里需要说明的是SDK版本需是1.5或者更高。
1.在Eclipse中,选择New > Project > Android > Android Test Project 。
2.然后按如下方式,填写:
Test Project名称:HelloAndroidTest
Test Target:选择“An existing Android project”,然后点Browse,选择以前建的“HelloWorld”,以前没有的,可以新建立一个。
Build Target:选择1.5平台或者高于1.5的。
Application名称:HelloAndroidTest
Package名称:com.yaozq.helloandroid.test
3.点finish,新建的这个测试工程就会在Eclipse中出现。
现在你就有了一个名为HelloAndroidTest的测试工程。下一步要做的就是定义一个test case类,这里这个test case需要继承Android的用于测试Activities的test case类,android中的这个test case类包含四个方法:
1.HelloAndroidTest:定义了这个类的构造器。
2.setUp():这个方法重写了Junit的setUp()方法,主要用于初始化测试环境。
3.testPreconditions():这个方法用于保证“Hello Android”程序能够正常启动起来。
4.testText():这个用于屏幕显示,显示的内容和程序的String资源是一样的。
下面,按照以上内容,继续。
在刚建立的测试工程的src的包下,新建一个名为“HelloAndroidTest”的类,继承自android.test.ActivityInstrumentationTestCase2<HelloAndroid>,父类的参数是要被测试程序的Activity,其他的地方不要改。
打开刚刚新建的这个测试类,它应该是如下的形式:
package com.yaozq.helloandroid.test; import android.test.ActivityInstrumentationTestCase2; public class HelloAndroidTest extendsActivityInstrumentationTestCase2<HelloAndroid> { }
接着就是,引进要测试程序的activity,添加构造器,添加setUp()、testText()和testPreconditions()方法,分别如下。
要引入的activity:com.yaozq.helloandrodi.HelloAndroidActivity
构造器:
public HelloAndroidTest() {//构造器,Android测试框架所必需的 super("com.yaozq.helloandroid", HelloAndroidActivity.class); }
testText()方法:
public void testText() {//测试字符串资源 assertEquals(resourceString,(String)mView.getText()); }
testPreconditions()方法:
public void testPreconditions() {//测试条件 assertNotNull(mView); }
所以一个完整的测试类,应该如下:
package com.yaozq.helloandroid.test; import android.test.ActivityInstrumentationTestCase2; import android.widget.TextView; import com.yaozq.helloandroid.HelloAndroidActivity; public class HelloAndroidTest extends ActivityInstrumentationTestCase2<HelloAndroidActivity> { //要被测试的activity private HelloAndroidActivity mActivity; private TextView mView; private String resourceString; public HelloAndroidTest() {//构造器,Android测试框架所必须的 super("com.yaozq.helloandroid", HelloAndroidActivity.class); } @Override protected void setUp() throws Exception {//初始测试环境 super.setUp(); mActivity = this.getActivity(); mView = (TextView) mActivity.findViewById(com.yaozq.helloandroid.R.id.textview); resourceString = mActivity.getString(com.yaozq.helloandroid.R.string.hello); } public void testText() {//测试字符串资源 assertEquals(resourceString,(String)mView.getText()); } public void testPreconditions() {//测试条件,只运行一次,主要用来检查要被测试的程序是否被整成初始化 assertNotNull(mView); } }
然后在项目名称上点右键Run As>Android JUnit Test,这样ADT插件就会启动测试程序和被测试程序,当这两个程序都运行起来之后,Android测试框架就会在Eclipse的JUnit视图中报告测试结果。
JUnit视图显示如下,它包含两上下两个窗格。上面的窗格包含:“Finished after xx seconds”、“Runs”、“Errors”、“Failure”,分别是表示测试所用的时间、运行的测试数目、测试中遇到的错误,遇到的assertion failures数目,还包括一个状态栏,如果测试成功显示为绿色,失败为红色。下面的窗格用来显示失败记录,如果成功的话就什么都不显示,如果失败的话就会打印出失败信息。
另外请参见:http://developer.android.com/resources/tutorials/testing/helloandroid_test.html