Java 增加Eclipse中JUnit测试的堆栈大小
我有一个问题,每当我尝试运行JUnit测试时,它们都会因为Java 增加Eclipse中JUnit测试的堆栈大小,java,eclipse,junit,junit4,stack-size,Java,Eclipse,Junit,Junit4,Stack Size,我有一个问题,每当我尝试运行JUnit测试时,它们都会因为StackOverflowerError而失败。我的问题是,我有一个递归函数,它遍历一个非常大的图以找到所有可能的路径。我还有一个递归计数器,它计算最深的递归是什么,对于大多数图,我的值在3000到4000之间。当我运行JUnit测试时,StackOverflowerError总是精确地出现在2300,无论我设置了什么VM参数 我已经尝试了-Xss1m到-Xss10m,但是没有成功,堆栈溢出错误仍然在相同的递归深度出现。我已经在互联网上搜
StackOverflowerError
而失败。我的问题是,我有一个递归函数,它遍历一个非常大的图以找到所有可能的路径。我还有一个递归计数器,它计算最深的递归是什么,对于大多数图,我的值在3000到4000之间。当我运行JUnit测试时,StackOverflowerError
总是精确地出现在2300,无论我设置了什么VM参数
我已经尝试了-Xss1m
到-Xss10m
,但是没有成功,堆栈溢出错误仍然在相同的递归深度出现。我已经在互联网上搜索了一下,发现我还需要设置正在运行的eclipse应用程序的堆栈大小。所以我还是这样做了,但还是没有用
下面是我已经尝试设置堆栈大小的几个屏幕截图:
你知道我错过了什么吗?现在回答这个问题有点晚了
解决方案一:
<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>
org.apache.maven.plugins
maven surefire插件
2.19.1
-Xss18m
org.apache.maven.surefire
surefire-junit47
2.19.1
检查行虽然这是一个有效的问题,但您是否考虑过简单地重构代码以使用非递归方法?是的,我们目前正在使用非递归方法来解决此问题,但目前我们需要此解决方案,因为它比我们一开始认为的更复杂。。。