运行JUnit测试时无法为对象堆保留足够的空间

时间:2014-10-13 13:47:17

标签: java intellij-idea junit

在我的项目中,我有单元测试。我正在使用IntelliJ。每当我尝试运行它们时,IntelliJ都会显示消息:

  

VM初始化期间发生错误

     

无法为对象堆保留足够的空间

     

无法创建Java虚拟机。

我尝试使用VM参数Run Configuration -> VM options: -Xms256m -Xmx512m运行这些测试 我已经阅读了很多关于这个问题(和提出的解决方案),尝试了很多组合,但没有一个工作。我变得沮丧,并认为我的测试“太复杂”(模拟和类似的东西......),所以我写了样本测试:

public class TestClass {

    @Test
    public void test() {
        assertTrue(true);
    }
}

我仍然得到同样的错误!仅在运行测试时出现问题 - 其他方法运行正常。什么想法可能导致这个奇怪和恼人的错误?我是IntelliJ的新手,所以也许我错过了一些东西。

更新

我尝试从命令行运行测试,但结果相同。最后,我通过向maven命令添加-DforkMode=never来运行它们。但仍然无法从IntelliJ运行测试。

1 个答案:

答案 0 :(得分:1)

我遇到了同样的问题,现在我已经解决了。如果您使用的是maven,则可以通过向pom.xml添加类似这样的属性来配置需要传递给运行的默认jvm args或其他测试选项。您可能需要注意,这是所有junit运行的主设置。

        <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-surefire-plugin</artifactId>
            <version>2.8.1</version>
            <configuration>
                <argLine>-Xms500m -Xmx1g</argLine>
                <enableAssertions>true</enableAssertions>
                <testFailureIgnore>true</testFailureIgnore>
            </configuration>
        </plugin>

就我而言,项目将此配置设置为使用-Xms10g -Xmx10g。用-Xms500m -Xmx1g等较低的值替换它可以解决问题。

您可能已经有类似的配置,因此您可能希望在本地覆盖它,否则添加此配置应该有助于覆盖Intellij传递的默认值。