11

我正在尝试在 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)

我不明白发生了什么。

4

6 回答 6

21

这可能不是你的问题,但我能够通过使用 Run As -> Android Application 来解决这个问题。

但是,我不确定您是否使用的是android。可能检查运行配置是否存在其他问题。

于 2012-09-26T18:49:38.323 回答
12

您需要更正运行配置。

如果你想运行一个 JUnit 测试

"right click on test class in the package explorer"->"Run As"->"JUnit Test"

在 android 项目上,您需要将“Android JUnit Test Launcher”设置为启动器。即使您的启动配置具有“JUnit”类型,您也必须使用该 android 启动器。

您可以在以下位置找到它:

"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
于 2013-04-05T17:56:44.497 回答
3

对我来说,解决方案是:Run -> Run Configurations... ->在选项卡 Test 单击Select Preferred Launcher并选择Use configuration specific settings with selection Android JUnit Test Launcher

删除 JUnit 下的所有条目(运行配置对话框的左列;RightMouse - 删除)。

然后Run as -> JUnit Test并选择性地选择Use configuration specific settings with Android JUnit Test Launcher

于 2013-09-04T06:24:54.497 回答
1

右键单击带有 main 的 java 类,运行配置,然后转到类路径选项卡,删除那里的 android 库。然后运行。

我希望这有帮助。

于 2013-08-18T00:13:53.050 回答
0

It goes easier. Got to Run->Configuration and look for JUnit and Android JUnit Tests. Delete your config if it is there. Then the next time you click on Run it will ask about the configuration. You choose first JUnit and then in the next dialog activate "Use configuration specific settings" and then choose Android JUnit Test Laucher.

于 2013-07-18T23:09:18.303 回答
0

我也遇到了同样的问题,原因是我在我的 android 项目中添加了 main(String s[]) 方法。

所以只需从项目中删除 main(String s[]) 方法并作为 Android 应用程序运行。

于 2014-01-14T09:06:38.263 回答