Android上的单元测试
http://www.it168.com 2009年12月04日 IT168网站原创 作者:ITPUB BLOG 编辑:晓熊 评论:0条
本文Tag: Android 单元测试   如何在Android中利用Instrumentation来进行测试?

  在介绍具体的命令之前,我们先理解一下单元测试的层次。一组单元测试可以被组织成若干个TestSuite。每个TestSuite包含若干 TestCase(某个继承android.jar的junit.framework.TestCase的类)。每个TestCase又包含若干个 Test(具体的test方法)。

  如果假设com.android.foo是你的测试代码的包的根。当执行以下命令时,会执行所有的TestCase的所有Test。测试的对象就是在Target Package中指定的包中的代码:

  adb shell am instrument -w com.android.foo/android.test.InstrumentationTestRunner

  如果你想运行一个TestSuite,首先继承android.jar的junit.framework.TestSuite类,实现一个 TestSuite(比如叫com.android.foo.MyTestSuite),然后执行以下命令执行此TestSuite

  adb shell am instrument -e class com.android.foo.MyTestSuite -w com.android.foo/android.test.InstrumentationTestRunner

  其中的-e表示额外的参数,语法为-e [arg1] [value1] [arg2] [value2] …这里用到了class参数。

  如果仅仅想运行一个TestCase(比如叫com.android.foo.MyTestCase),则用以下命令:

  adb shell am instrument -e class com.android.foo.MyTestCase -w com.android.foo/android.test.InstrumentationTestRunner

  如果仅仅想运行一个Test(比如就是上面MyTestCase的testFoo方法),很类似的,就这样写:

  adb shell am instrument -e class com.android.foo.MyTestCase#testFoo -w com.android.foo/android.test.InstrumentationTestRunner

  然后,所有的测试结果会输出到控制台,并会做一系列统计,如标记为E的是Error,标记为F的是Failure,Success的测试则会标记为一个点。这和JUnit的语义一致。如果希望断点调试你的测试,只需要直接在代码上加上断点,然后将运行命令参数的-e后边附加上debug true后运行即可。更加详细的内容可以看InstrumentationTestRunner的Javadoc。我希望Android能尽快有正式的文档来介绍这个内容。

  如何在Android的单元测试中做标记?

  在 android.test.annotation包里定义了几个annotation,包括 @LargeTest,@MediumTest,@SmallTest,@Smoke,和@Suppress。你可以根据自己的需要用这些 annotation来对自己的测试分类。在执行单元测试命令时,可以在-e参数后设置“size large”/ “size medium”/ “size small”来执行具有相应标记的测试。特别的@Supperss可以取消被标记的Test的执行。

  完整的操作过程

  总结以上所有的内容,编写并运行完整的测试需要以下的步骤:


[img][/img]

  以上步骤中,在 Android自带的例子中,我发现它有两个manifest.xml。也就是说在步骤3中源代码和测试代码分别生成了两个不同的包。然后步骤4利用 adb install命令安装到了虚拟机上。由于我没有找到Eclipse ADT有办法可以为一个只有Instrumentation,没有Activity的Application打包并安装,于是采用了略微不同的办法完成了这个工作。下文中将一一详细介绍整个过程。

更多相关文章

  1. Android自学笔记-7-Android中的junit
  2. 向eclipse中导入android中的sample样例+gen目录缺少R.java文件
  3. cordova与android的版本对应和安装
  4. Android中AsyncTask基本用法与源码分析(API 23)
  5. 为Android加入busybox工具
  6. android中如何执行java命令
  7. Android事件分发机制完全解析,带你从源码的角度彻底理解(上)
  8. android中如何执行java命令
  9. android Instrumentation

随机推荐

  1. android中文字跑马灯效果
  2. Android日期时间格式国际化
  3. android 颜色值 xml
  4. Android Property System
  5. 【Android UI】色板
  6. AndroidщАЪш┐ЗViewPagerхоЮчО
  7. 在eclipse中查看Android(安卓)SDK源代码
  8. 2013.10.14 “?android ”
  9. 默认的Android(安卓)Dialog 样式
  10. Android仿计算器布局代码