我正在尝试在Eclipse上使用JUnit 4和Robolectric进行测试但是我一直收到此错误:
Invalid layout of java.lang.String at value
#
# A fatal error has been detected by the Java Runtime Environment:
#
# Internal Error (javaClasses.cpp:129), pid=3546, tid=140317899335424
# fatal error: Invalid layout of preloaded class
#
# JRE version: 7.0_07-b10
# Java VM: Java HotSpot(TM) 64-Bit Server VM (23.3-b01 mixed mode linux-amd64 compressed oops)
# Failed to write core dump. Core dumps have been disabled. To enable core dumping, try "ulimit -c unlimited" before starting Java again
#
我的测试非常简单。它只用于检查所有工作:
@RunWith(RobolectricTestRunner.class)
public class FormatTest {
@Test
public void getFormatElapsedTimeOnSecondsTest(){
assertEquals("3seg","3seg");
}
}
我系统上安装的Java是:
java version "1.7.0_07"
Java(TM) SE Runtime Environment (build 1.7.0_07-b10)
Java HotSpot(TM) 64-Bit Server VM (build 23.3-b01, mixed mode)
我不明白发生了什么。
答案 0 :(得分:21)
这可能不是你的问题,但我可以通过使用Run As - >来解决这个问题。 Android应用程序。
但是,我不确定你是否使用了android。可能会检查运行配置是否存在其他问题。
答案 1 :(得分:12)
您需要更正运行配置。
如果要使用
运行JUnit测试"right click on test class in the package explorer"->"Run As"->"JUnit Test"
在Android项目中,您需要将“Android JUnit Test Launcher”设置为启动器。 即使您的启动配置具有“JUnit”类型,您也可以使用该安卓启动器。
您可以在以下网址找到它:
"right click on test class in the package explorer"->"Properties"->"Run/Debug Settings"->"Edit..."
示例强>:
测试:
import junit.framework.TestCase;
public class ExampleTest extends TestCase{
public ExampleTest(String name){
super(name);
}
protected void setUp() throws Exception{
super.setUp();
}
protected void tearDown() throws Exception{
super.tearDown();
}
public void testFoo(){
fail("Not yet implemented");
}
}
创建运行配置:
"Run"->"Run Configurations..."->"Right click on JUnit"->"New"->"Set project and Test class"->"Select Android JUnit Test Launcher"->"Run"
注意:如果您使用的是x86 jdk,如果您的Launcher设置为“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:129), pid=3844, tid=4828
# fatal error: Invalid layout of preloaded class
#
# JRE version: 7.0_17-b02
# Java VM: Java HotSpot(TM) Client VM (23.7-b01 mixed mode windows-x86 )
# Failed to write core dump. Minidumps are not enabled by default on client versions of Windows
答案 2 :(得分:3)
对我来说是解决方案:运行 - >在选项卡上运行配置... - > 测试点击选择首选启动器并选择使用配置特定设置,选择 Android JUnit测试启动器。
删除JUnit下的所有条目(“运行配置”对话框的左栏; RightMouse - 删除)。
然后以运行方式运行 - > JUnit测试并选择使用Android JUnit Test Launcher 配置特定设置。
答案 3 :(得分:1)
右键单击带有main,run配置的java类,然后转到classpath选项卡,删除那里的android库。然后跑。
我希望这会有所帮助。
答案 4 :(得分:0)
它变得更容易。得到Run->配置并查找JUnit和Android JUnit测试。删除您的配置(如果有)。然后,当您下次单击“运行”时,它将询问有关配置的信息。首先选择JUnit,然后在下一个对话框中激活“使用配置特定设置”,然后选择Android JUnit Test Laucher。
答案 5 :(得分:0)
我遇到同样的问题,原因是我在我的android项目中添加了main(String s [])方法。
所以只需从项目中删除main(String s [])方法并作为Android应用程序运行。