2014-09-03 73 views
1

我拉着我的头发试图在Android项目上运行普通的vanilla JUnit测试。我想为不使用任何Android对象的POJO类编写一个测试。事实上,我甚至无法进行测试工作,没有任何测试!在Android Eclipse JUnit项目中运行单个类的vanilla JUnit测试

我读过Google's "Testing Fundamentals" documentation,无数SO问题,我认为我已经达到了一个愚蠢的新高度,因为我似乎比Android历史上的任何人都少。

什么我应该做我最好的猜测是:

  1. 创建一个新的Android项目。我已经开发了我的原型应用程序,包括活动,POJO和其他一切 - 它在我的手机上运行良好。 “MyExample”
  2. 在Eclipse“包资源管理器”窗口中,在我想测试的android项目中,在“src”文件夹项中,右键单击包项目:“com.example.myexample”,选择“New”>“Other ...”,
  3. 然后在弹出的窗口中选择“Android”>“Android Test Project”
  4. 在“Project Name”文本框中输入“TestMyProject”,点击“下一步“按钮。
  5. 选择“现有Android项目”单选按钮,选择“MyExample”,然后单击“完成”按钮。
  6. 在“Package Explorer”中展开“TestMyExample”,右键单击包“com.example.myexample.test”,选择“New”>“JUnit Test Case”
  7. 在该弹出窗口中,输入名称“对MyTestCase”。

然后我进入java文件如下:

package com.example.myexample.test; 

import junit.framework.TestCase; 

public class MyTestCase extends TestCase { 

    public void testHelloWorld(){ 

     assertTrue("Hello World Error", false); 

    } 

} 

最后,我右键单击Package Explorer中的文件,选择 “运行方式”> “JUnit测试”,然后在弹出窗口中选择“使用配置特定设置”,然后选择“Eclipse JUnit Launcher”并点击“确定”按钮。

我得到在控制台窗口中此错误:

Invalid layout of java.lang.String at value 
# 
# A fatal error has been detected by the Java Runtime Environment: 
# 
# Internal Error (javaClasses.cpp:136), pid=5216, tid=2756 
# fatal error: Invalid layout of preloaded class 

我似乎得到各种各样的取决于我用什么方法“布局无效”的错误。

请帮忙!!

回答

1

除非您的问题中存在拼写错误,否则一个可能的问题是您尝试运行它们的方式。

选择运行方式 - > Android JUnit测试,而不仅仅是JUnit测试。 这是因为这些测试需要在设备上运行,所以构建比正常的JUnit测试涉及更多。

我猜你已经阅读了docs,但这很容易错过。

+0

好的,谢谢,工作!有没有在android项目中测试对象,不参考任何android对象,没有使用真实或虚拟设备,没有使用roboelectric或mockito等的方法?只需在常规虚拟机上使用JUnit? – Jodes 2014-09-03 08:36:40

+0

是的,如果您正在测试的东西不使用Android框架中的任何东西,那么您应该能够为其编写一个正常的JUnit测试,并在JVM上将其作为JUnit测试运行,并且应该可以正常工作。即使在代码中使用Android框架,Robolectric也非常适合在JVM上运行单元测试。 Mockito与两者无关,如果您想要模拟,您可以将它与任何需要的测试结合使用。 – 2014-09-03 08:42:40

+0

谢谢 - 我需要为代码(和/或测试)制作非Android项目以在JVM上使用纯JUnit进行测试吗? – Jodes 2014-09-03 08:50:08