技术开发 频道

Android上的单元测试

  2、编写测试程序

  然后,我新建了一个Source Folder,名为test,并在里面新建了包com.android.testapp.test。并定义了一个TestCase,名为TestMainActivity,源代码如下:

  package com.android.testapp.test;

  import com.android.testapp.MainActivity;

  import android.test.ActivityInstrumentationTestCase;

  import android.test.suitebuilder.annotation.MediumTest;

  public class TestMainActivity extends ActivityInstrumentationTestCase {

  public TestMainActivity() {

  super("com.android.testapp", MainActivity.class);

  }

  public TestMainActivity(String pkg, Class activityClass) {

  super(pkg, activityClass);

  }

  @MediumTest

  public void testSum() {

  assertEquals(3, getActivity().sum(1, 2));

  }

  @MediumTest

  public void testSubstract() {

  assertEquals(-1, getActivity().substract(1, 2));

  }

  }

  我继承了ActivityInstrumentationTestCase。这个TestCase在执行时会自动帮我启动相应的Activity。

  接下来就是程序的Manifest:

<?xml version="1.0" encoding="utf-8"?>

<manifest xmlns:android="http://schemas.android.com/apk/res/android"

package
="com.android.testapp"

android:versionCode
="1"

android:versionName
="1.0.0">

<application android:icon="@drawable/icon" android:label="@string/app_name">

<activity android:name=".MainActivity"

android:label
="@string/app_name">

<intent-filter>

<action android:name="android.intent.action.MAIN" />

<category android:name="android.intent.category.LAUNCHER" />

</intent-filter>

</activity>

<uses-library android:name="android.test.runner" />

</application>

<instrumentation android:targetPackage="com.android.testapp" android:name="android.test.InstrumentationTestRunner" android:label="Test Unit Tests"></instrumentation>

</manifest>

  在这个文件中,我将 Activity和Instrumentation的声明写到了一起,而没有像Apis Demo那样分开。请注意里面的标签。如果没有那句,在运行测试时会报告找不到TestRunner。这是由于 Android在build的时候只把需要的东西打包,所以你必须明确的告诉Android Builder这一点。

1
相关文章