2010-01-09 87 views
2

按照Diego Torres blog的一些说明操作后,我可以使用普通的Eclipse JUnit测试运行器来测试我的类,但是我也希望能够在模拟的android环境中运行我的单元测试。当我尝试在Android模拟器上运行Junit测试用例时,为什么会发生此错误?

现在这应该没有什么真正的区别,因为我正在从事的类是非常基本的数值或联网任务,但显然任何涉及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 [email protected] 

正如你所期望,测试结束(没有在最终的“无法实例化仪器化ComponentInfo”消息后实际运行任何测试)

现在我的测试案例只包含Junit3和Junit4锅炉代码。测试只包含fail()调用,我只需要在这个阶段完成表明我可以在两种环境中执行基本的单元测试,以便开始测试驱动开发。

注: - 在Ubuntu 64位 运行Eclipse 3.5 - 仿真器设置为API级别2 - 我是新来的Android和Java两种,所以原谅我的基本问题

+1

我可能会误解,但我认为混合JUnit 3和JUnit 4通常被认为是一个坏主意。挑一个并坚持下去。 (我知道关于Java但不关于Android,所以我可能完全错误) – MatrixFrog 2010-01-09 01:09:25

+0

我很确定Junit4测试运行者可以处理Junit3测试用例。当然,这不是可以接受的,但是现在我试图看看不兼容性是否与一个版本相关:不是。 – 2010-01-10 01:18:40

回答

6

我会忽略什么博客说;看起来很过时。

你不需要导入JUnit库或类似的东西; Android SDK中集成了相应的类TestCase等。

只需在您的项目中创建一个新课程并将其延伸至AndroidTestCase即可。然后,您可以右键单击要运行的测试用例(或测试用例包),然后选择运行方式为→ Android JUnit测试。

此外,我会使用高于2的API级别。Virtually no devices in use正在运行Android 1.1;您可以安全地切换到API级别3,这是Android 1.5,与以前的版本相比有了很大的改进。

+0

你知道android测试运行器是否可以运行派生自junit.framework.TestCase的类? – 2010-01-10 01:12:26

+1

是的,这也可以。就像上面那样“运行”Android JUnit测试。 – 2010-01-10 02:04:50

+0

您是否知道android测试运行器是否可以处理Junit4风格的测试用例,还是严格的Junit3兼容? – 2010-01-10 15:22:29

相关问题