android提供了JUnit测试框架和Instrumentation框架。关于具体的测试教程请查看wiki

1. JUnit TestCase类

 常用的测试类有

  • ApplicationTestCase——测试整个应用程序的类。它允许你注入一个模拟的Context到应用程序中在应用程序启动之前初始化测试参数并在应用程序结束之后销毁之前检查应用程序。


  • ProviderTestCase2——测试单个ContentProvider的类。因为它要求使用MockContentResolver并注入一个IsolatedContext因此Provider的测试是与OS孤立的。


  • ServiceTestCase——测试单个Service的类。你可以注入一个模拟的Context或模拟的Application或者两者或者让Android为你提供Context和MockApplication。


2. Instrumentation TestCase类

  继承自JUnit TestCase类并可以使用Instrumentation框架用于测试Activity。使用         InstrumentationAndroid可以向程序发送事件来自动进行UI测试并可以精确控制Activity的

  启动监测Activity生命周期的状态。

  • ActivityTestCase——Activity测试类的基类。


  • SingleLaunchActivityTestCase——测试单个Activity的类。它能触发一次setup()和tearDown()而不是每个方法调用时都触发。如果你的测试方法都是针对同一个Activity的话那就使用它吧。


  • SyncBaseInstrumentation——测试Content Provider同步性的类。它使用Instrumentation在启动测试同步性之前取消已经存在的同步对象。


  • ActivityUnitTestCase——对单个Activity进行单一测试的类。使用它你可以注入模拟的Context或Application或者两者。它用于对Activity进行单元测试。不同于其它的Instrumentation类这个测试类不能注入模拟的Intent。


  • ActivityInstrumentationTestCase2——在正常的系统环境中测试单个Activity的类。你不能注入一个模拟的 Context但你可以注入一个模拟的Intent。另外你还可以在UI线程应用程序的主线程运行测试方法并且可以给应用程序UI发送按键及触 摸事件。

注意点

1)android测试程序的Test Applition Id为包名.test;Test 

  Instrumentation Runner为:android.test.InstrumentationTestRunner

2) android测试代码运行的线程并不是UI线程。因此如果需要对UI元素进行setText或是click之类的操作,需要通过getActivity().runOnUiThread(action)方法执行。