【问题标题】:Increase stack size of JUnit test in Eclipse在 Eclipse 中增加 JUnit 测试的堆栈大小
【发布时间】:2014-12-18 11:46:08
【问题描述】:

我有一个问题,每当我尝试运行我的 JUnit 测试时,它们都会因为 StackOverflowError 而失败。我的问题是我有一个递归函数,它遍历一个非常大的图形以找到所有可能的路径。我还有一个递归计数器,它计算最深的递归是多少,并且大多数图形都位于 3000 到 4000 之间。当我运行 JUnit 测试时,StackOverflowError 总是准确地出现在 2300,无论我设置什么 VM 参数。

我已经尝试过 -Xss1m-Xss10m 但无济于事 StackOverflowError 仍然出现在相同的递归深度。我已经在互联网上搜索了一下,发现我还必须设置正在运行的 Eclipse 应用程序的堆栈大小。所以我做了,但再次无济于事。

这里有一些我已经尝试设置堆栈大小的屏幕截图:

有什么我错过的想法吗?

【问题讨论】:

  • 虽然这是一个有效的问题,但您是否考虑过简单地重构代码以使用非递归方法?
  • 是的,我们目前正在研究一种非递归的方法来解决这个问题,但目前我们需要这个解决方案,因为它比我们最初认为的更复杂......

标签: java eclipse junit junit4 stack-size


【解决方案1】:

现在回答这个问题有点晚了......

首先解决:

       <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-surefire-plugin</artifactId>
            <version>2.19.1</version>
            <configuration>
                <!-- look here -->
                <argLine>-Xss18m</argLine>
            </configuration>
            <dependencies>
                <dependency>
                    <groupId>org.apache.maven.surefire</groupId>
                    <artifactId>surefire-junit47</artifactId>
                    <version>2.19.1</version>
                </dependency>
            </dependencies>
        </plugin>

查看&lt;!--look here &gt;这一行,代码块里不知道怎么高亮。

您的解决方案不起作用的原因: 你修改的JVM没有被junit使用。

如果你在这个类中写了一个主函数,它就会使用它。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2013-05-18
    • 2011-07-05
    • 2015-11-22
    • 1970-01-01
    • 2010-11-24
    • 2017-03-02
    • 2015-07-01
    • 1970-01-01
    相关资源
    最近更新 更多