按照Diego Torres blog上的一些说明后,我可以使用常规的Eclipse JUnit测试运行器来测试我的类,但是我也希望能够在模拟的android环境中运行我的单元测试。
现在这应该没有什么区别,因为我正在处理的类做了非常基本的数字或网络任务,但显然任何涉及UI或Android API特定功能的东西都只能在模拟器上进行测试。
我设置了AndroidJUnitTest类型的新运行配置,它使用android.test.InstrumentationTestRunner,但是每当我启动测试时,我在控制台中都会出现以下错误:
[2010-01-09 00:45:23 - Pal1]Uploading Pal1.apk onto device 'emulator-5556'
[2010-01-09 00:45:23 - Pal1]Installing Pal1.apk...
[2010-01-09 00:45:25 - Pal1]Success!
[2010-01-09 00:45:25 - Pal1]Launching instrumentation android.test.InstrumentationTestRunner on device emulator-5556
[2010-01-09 00:45:27 - Pal1]Test run failed: Unable to instantiate instrumentation ComponentInfo{org.stodge.traderpal/android.test.InstrumentationTestRunner}: java.lang.ClassNotFoundException: android.test.InstrumentationTestRunner in loader dalvik.system.PathClassLoader@43598c28
正如您所料,测试结束(在最终的“无法实例化检测组件信息”消息之后实际上没有运行任何测试。
现在我的测试用例只包含Junit3和Junit4锅炉电镀代码。测试的实现只包含fail()调用。我在这个阶段需要做的就是表明我可以在两个环境中执行基本的单元测试,这样我就可以开始测试驱动的开发了。
注意: - 在Ubuntu 64bit上运行Eclipse 3.5 - 模拟器设置为API级别2 - 我是Android和Java的新手,请原谅我的基本问题
答案 0 :(得分:6)
我会忽略那篇博客说的话;它似乎已经过时了。
您不需要导入JUnit库或类似的东西;适当的类TestCase
等已集成到Android SDK中。
只需在项目中创建一个新类并扩展AndroidTestCase
。然后,您可以右键单击要运行的测试用例(或测试用例包),然后选择Run As→Android JUnit Test。
另外,我会使用高于2的API级别。Virtually no devices in use正在运行Android 1.1;您可以安全地切换到API级别3,这是Android 1.5,并且比以前的版本有了很大的改进。