转:如何运行Android sdk sample中的单元测试

Android1.5_r1的releasenotes中专门提到了ADT0.9对于JUnit支持的改进,对于崇尚TDD(测试驱动开发)的人来说这无疑是一个好消息,今天就抽点时间说说Android1.5中JUnit集成相关的要点吧。

配置完1.5的SDKADT0.9,运行第一个1.5的sample的时候我就看到Runas中多出了一个“AndroidJUnitTest”的选项(以前是在Debug中)。

就先来看一看如何把Sample中的testcase跑起来吧。

(多谢Zhao的blog上关于在Android1.5pre中运行APIDemo测试的总结)

第1步,新建一个Android项目,选择“createprojectfromexistingsource”,并把路径指向android-sdk-1.5/platforms/android-1.5/samples/ApiDemos

第2步,再新建一个Android项目,依然通过“createprojectfromexistingsource”的方式,这次把路径指向android-sdk-1.5/platforms/android-1.5/samples/ApiDemos/tests

这时候ADT会报错,因为它无法找到APIDemo项目。右键,选择Properties,在JavaBuildPath–>Projects中添加APIDemo项目即可。

第3步,以“AndroidApplication”方式运行第一个项目(注意正确设置AVD,第一次运行程序时,选中项目单击右键àRunAsàOpenRunDialogàTarget,选中所用的AVD),APIDemo将被安装到模拟器。

第4步,以“AndroidApplication”方式运行第二个项目(注意正确设置AVD,第一次运行程序时,选中项目单击右键àRunAsàOpenRunDialogàTarget,选中所用的AVD),APIDemoTest将被安装到模拟器。

第5步,现在,我们可以通过DevTools中的Instrumentation来执行APIDemoTest了。找到“Devtools”à“Instrumentation”中的”TestsforAPIDemos。”,点击即可开始测试。

这时,通过LogCat即可看到测试结果。

  
I/instrumentation( 773): INSTRUMENTATION_STATUS_CODE: 1

  I/TestRunner( 780): finished: testAndroidTestCaseSetupProperly(com.example.android.apis.view.Focus2AndroidTest)

  I/TestRunner( 780): passed: testAndroidTestCaseSetupProperly(com.example.android.apis.view.Focus2AndroidTest)

  I/instrumentation( 773): INSTRUMENTATION_STATUS_RESULT: stream=。

  I/instrumentation( 773): INSTRUMENTATION_STATUS_RESULT: test=testAndroidTestCaseSetupProperly

  I/instrumentation( 773): INSTRUMENTATION_STATUS_RESULT: class=com.example.android.apis.view.Focus2AndroidTest

  I/instrumentation( 773): INSTRUMENTATION_STATUS_RESULT: current=22

  I/instrumentation( 773): INSTRUMENTATION_STATUS_RESULT: numtests=22

  I/instrumentation( 773): INSTRUMENTATION_STATUS_RESULT: id=InstrumentationTestRunner

  I/instrumentation( 773): INSTRUMENTATION_STATUS_CODE: 0

  I/instrumentation( 773): INSTRUMENTATION_RESULT: stream=

  I/instrumentation( 773): Test results for InstrumentationTestRunner=.........。.

  .........。.

  I/instrumentation( 773): Time: 12.212

  I/instrumentation( 773):

  I/instrumentation( 773): OK (22 tests)

除了通过DevTools来执行单元测试,我们还有另外两种方法:

1、通过ADT,在eclipse中执行测试

在eclipse中选中test项目,直接RunAs“AndroidJUnitTest”既可以,测试结果会以图形化的方式返回。

2、通过sdbshell命令执行测试

在命令行中执行adbshellaminstrument-wcom.example.android.apis.tests/android.test.InstrumentationTestRunner命令

其中,com.example.android.apis.tests是APIDemoTest所在的package。

那么,我们如何创建自己的test项目呢?

大致的步骤如下:

1、新建一个普通的Android项目,比如项目名为Foo,Package为com.foo.bar

2、新建一个Test项目,注意把Package填成com.foo.bar.tests,项目名任意,比如FooTest,Applicationname任意

3、在FooTest项目的BuildPath中添加Foo项目

4、参照APIDemoTest项目的manifext.xml来修改FooTest项目的manifest.xml

5、编写TestCase(至于测试代码的编写,还在学习中)

相关推荐