步骤三、设置测试工程的编译路径。

  ● 在SnakeUnitTest工程上点击右键,选择Properties。

  ● 在Properties窗口中选择Java Build Path。

  ● 切换到Projects标签,点击Add按钮,然后在工程选择窗口勾选被测应用Snake工程。

  ● 切换到Libraries标签,点击Add Library按钮,在选择窗口选择User Library并点击Next,再点击User Libraries。在User Libraries窗口点击New按钮,填入自定义Library的名字,如OPhone,然后点OK。再选择Add Jars,在弹出窗口切换至OPhone SDK安装目录的platforms/android-1.5目录,选择oms.jar, 后点OK。

  步骤四、编辑测试工程的AndroidMenifest.xml。

  ● 展开SnakeUnitTest,双击AndroidMenifest.xml 。

  ● 在编辑窗口,将AndroidMenifest.xml 的内容改为如下图所示内容:

  ● 必须定义;

  ● android:lable,为可选项,值可以根据项目实际自定义;

  ● android:name,必须定义,是TestRunner的名字,也可自定义新的TestRunner;

  ● android:targetPackage,必须定义,对应被测应用的包名。

  步骤五、创建测试类。

  ● 在oms.unittest.snake包下创建SnakeTest.java。每个测试类对应被测应用的一个类,并命名为“被测类名Test”的样式。如Snake应用有Snake、SnakeView和TileView三个类,对应的测试类分别是SnakeTest、SnakeViewTest和TileViewTest。

  ● SnakeTest.java的框架如下图所示:

  在SnakeTest中,包括对com.example.android.snake.Snake中各个方法的测试用例,如testOnPause()是对Snake中的onPause()方法进行测试。“test被测方法”是推荐的单元测试命名方式,这样有助于提高测试代码的可读性。

  SnakeTest继承自ActivityInstrumentationTestCase2,是因为被测的Snake.java中定义的是Snake这个Activity的onCreate()和onPause()等,使用ActivityInstrumentationTestCase2的子类可以方便的对这些方法进行测试,并且能得到被测应用和测试应用本身的context和resource。当然,也可以使用InstrumentationTestCase的子类,自主控制Activity的启动和关闭。

  下图是TileViewTest的片段:

  TileViewTest继承自AndroidTestCase。AndroidTestCase与一般的JUnit TestCase的主要不同之处在于它可以通过getContext()方法得到被测应用的context,但无法得到测试本身的context,也无法获得测试应用自己的resource。当有Res.getXml(R.xml.test)这种访问resource的需要时,必须修改或调用被测应用的resource。这一点需要注意。