如何在不使用Android的情况下使用JUnit测试Android应用程序中的类?
我有一个 Android 应用程序,其中包含纯 Java 类。我想在不使用 Android 设备或模拟器的情况下测试此类,但是当我创建 JUnit 4 测试套件和案例时run int (作为 Eclipse 中的 JUnit 测试),它显示以下内容:
# A fatal error has been detected by the Java Runtime Environment:
#
# Internal Error (classFileParser.cpp:3494), pid=5492, tid=5608
# Error: ShouldNotReachHere()
我应该做什么?
Possible Duplicate:
Can't run JUnit 4 test case in eclipse
I have an Android application, which contains plain Java class. I want to test this class without using Android device or Emulator, but when I create JUnit 4 test suite and case & run int (as JUnit test in Eclipse), it says the following:
# A fatal error has been detected by the Java Runtime Environment:
#
# Internal Error (classFileParser.cpp:3494), pid=5492, tid=5608
# Error: ShouldNotReachHere()
What should I do?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(4)
如果您希望单元测试在本地运行,则需要从 Java 项目(而不是 Android 项目)运行测试。我认为您收到该错误的原因是您在 JVM 上运行 Dalvik 字节码。
您可以将 Java 代码分离到您进行单元测试的 Java 库中。
或者您可以使用 Robolectric 按原样测试您的代码。 Robolectric 重写了 Android SDK 类,以便您可以在本地运行它们。 Eclipse 快速入门对于入门很有用。您将创建一个 java junit 项目,而不是 Android 测试项目。
Robolectric 的另一种方法是使用模拟框架,例如 Mockito 或 Android Mock 用于模拟 Android SDK。
If you want unit tests to run locally, you need to run your tests from a Java project (as opposed to an Android project). I think the reason you get that error is because you're running Dalvik bytecode on the JVM.
You can separate your java code into a java library that you unit test.
Or you can use Robolectric to test your code as is. Robolectric rewrites Android SDK classes so you can run them locally. The Eclipse quickstart is useful for getting started. You'll be creating a java junit project and not an Android test project.
An alternate approach to Robolectric is to use mock frameworks such as Mockito or Android Mock to mock out the Android SDK.
我建议将“纯 Java 代码”分离到一个自己的库中,该库可以独立于 Android 应用程序进行测试。还推荐该解决方案 这里(Maven:完整参考)。
I would recommend to separate the "plain Java code" into an own library which can be tested independently from you android application. The solution is also recommended here (Maven: The Complete Reference).
此帖子提供了一些有关 Android 单元测试的有用信息。还有 Robolectric 的链接,这可能是您正在寻找的替代方案。
This thread has some good information on unit testing on Android. And a link to Robolectric which might be an alternative you're looking for.
我认为您需要使用 AndroidTestRunner 和 AndroidTestCase 适用于 Android 上的 JUnit。
I think you need to use the AndroidTestRunner and the AndroidTestCase for JUnit on Android.