您的位置:软件测试 > 开源软件测试 > 开源单元测试工具 > junit
Android 下junit 单元测试
作者:网络转载 发布时间:[ 2014/1/14 14:47:00 ] 推荐标签:单元测试 junit Android

  如果假设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的执行。

  完整的操作过程

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

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

wordend 相关阅读:

    MOTODEV初体验,高效Android开发工具
    详解如何实现一个基本的Android用户界面
    Android应用开发实战:GPS与加速度传感器

  1、编写程序

  我新建了一个项目TestApp,参数为:

  Package Name: com.android.testapp

  Activity Name: MainActivity

  Application Name: TestApp

  以下是MainActivity的源代码:

  packagecom.android.testapp;

  importandroid.app.Activity;

  importandroid.os.Bundle;

  publicclassMainActivityextendsActivity {

  

  @Override

  publicvoidonCreate(Bundle savedInstanceState) {

  super.onCreate(savedInstanceState);

  setContentView(R.layout.main);

  }

  publicintsum(inta,intb) {

  returna + b;

  }

  publicintsubstract(inta,intb) {

  returnb - a;

  }

  }

  其中,我故意将减法的a – b写成了b – a。

上一页12345下一页
软件测试工具 | 联系我们 | 投诉建议 | 诚聘英才 | 申请使用列表 | 网站地图
沪ICP备07036474 2003-2017 版权所有 上海泽众软件科技有限公司 Shanghai ZeZhong Software Co.,Ltd