来自junittesting的“分叉Java VMexception退出”错误

我有一个单独运行在开发机器上的java junittesting。 我们还有一个hudson作业,在Java 1.5的Mac OS X 10.4节点上运行所有通过ant调用的testing。 直到最近,testing正在传递哈德森版本,但现在(没有相关的代码更改)每次都有一个testing失败,出现以下错误:

错误信息

分叉Java VMexception退出。 请注意,报告中的时间不会反映VM退出之前的时间。

堆栈跟踪

junit.framework.AssertionFailedError:分叉Java VMexception退出。 请注意,报告中的时间不会反映VM退出之前的时间。

谷歌search显示许多其他人似乎遇到了同样的问题,但在那里我找不到任何答案。

我面临类似的问题。 我把junittesting作为一个ant的任务。 我添加了showoutput =“是”antjunit属性,并运行ant junit任务。 然后显示导致分叉的jvm退出的exception堆栈跟踪。

对于我来说,在分叉虚拟机(junit任务fork =“yes”)中是一个“java.lang.OutOfMemoryError”,它使得这个消息出现在主虚拟机中。

OutOfMemory在ant日志中是可见的(当然,因为它仍然存在)。

我用ant1.7.1,所以升级ant没有希望。

在“运行>外部工具>外部工具> JRE”中放入相同的虚拟机参数(比Eclipse.ini(-Xms40m -Xmx512m -XX:MaxPermSize = 256M))后,问题就解决了。

我保持叉到“否”,以确保ant使用的参数。

我相信我看到这个错误,当我结束了我的类path的多个版本的junit。 可能值得一试。

虚拟机崩溃了吗? 你能find一个转储文件(叫做hs_err_pid*.log )吗? 如果是这种情况,转储文件会给你提示为什么这个崩溃的线索。

当未捕获的RuntimeException被抛出时,可能会发生这种情况。 不幸的是,junit ant任务不会输出这个exception,所以没有简单的方法来确定根本原因。 您可以通过从将显示exception的命令行运行testing用例来解决此问题。

 java <vm-args> org.junit.runner.JUnitCore <test-class-name> 

就我而言,抛出了IllegalArgumentException。

我有这个问题,事实certificate,这个过程实际上是调用System.exit()。 然而,在Ant中也有一个有时出现的bug。 我认为Ant 1.7.1修正了这个错误。 所以确保你正在运行该版本。

我的classpath中有多个junit jar。 一个是ant,另一个是来自WAS。 当我删除错误消失了…我使用1.8的Ant版本

我有一回一样的东西。 问题是System.exit()被调用某处。 可能很难find,因为调用可能来自您的代码或您使用的库之一。

我通过设置下面的环境variables来解决我的问题:

variables:_JAVA_OPTIONS值:-Xms128m -Xmx512m

对我们来说,实际上我们偶然地(使用了更新版本的eclipse)开始使用Ant 1.7.x,而不是我们的老版本Ant,它与我们的Weblogic 8.1 / JDK 1.4.x环境兼容。 我们通过在Eclipse-> Windows-> Preferences-> Ant-> Runtime中将Ant Home更改回到旧版本的Ant来解决这个问题。

问候Klas

在将新版本的NetBeans重新安装到外部硬盘上之后,我同时升级了Junit并使用了旧的工作空间,所以遇到了问题。

对我来说,同样的问题的解决scheme很简单:

只需将JUnit-Library添加到项目properties => Libraries => Compile TestsRun Tests

所以,就我而言,这只是一个缺less的库或JUnit版本冲突。

在我的情况下,它是一个类中的静态初始化/方法/块未捕获的exception。

具体来说,我有一个类在另一个类中调用静态方法,它触发了一个NumberFormatExceptionexception。

BTW添加“showoutput = true”到build.xml中的任务没有帮助排除故障。 由于静态块是最先运行的东西之一,所以JVM在可以输出任何东西之前就炸了。

我也有这个问题。 将junit任务从:

 <batchtest fork="yes" ... /> 

 <batchtest fork="no" ... /> 

给我修好了 我不完全理解这个ant的领域,或者为什么这样做会解决这个问题。 在我的场景中,它是“BeforeFirstTest”中的错误,我认为它是因为我的类path中有两个ant文件(这可能是我应该修复的)

我认为问题是与ant的版本之一: http : //track.pmease.com/browse/QB-500 ;jsessionid= C1CF6999CBBDB5097A9CFCF4A11AF6C0?page= com.atlassian.jira.plugin.system.issuetabpanels: all-tabpanel

ETA:我认为batchtest =“no”实际上改变了类path,因此导致排除了我的违规antjar。

我面临同样的问题。 问题在于模拟Config类时产生字节码; 我们改变了导入

 import static org.junit.Assert.assertNotNull; import static org.mockito.Mockito.times; import static org.mockito.Mockito.verify; import static org.mockito.Mockito.when; 

它的工作。

在我的情况下,运行我的testing的类path超出了操作系统允许的环境variables(也就是Linux类path太长的问题)的最大长度。

解决scheme是创build一个path的jar 。 简化的步骤:

  1. 使用jar(或者你的IDE)来制作一个你的项目的jar,我们把它叫做MyProject.jar

  2. 用文本创build一个名为Manifest.txt的文件

类path:MyProject.jar

  1. 运行jar命令行这个

jar cfm PathingJar.jar manifest.txt MyRootPackage / *。class

然后,在你的构build工具中,针对pathjar本身运行你的testing指令(不要混入其他类或jar)。 然后我能够让我的testing没有例外运行。

我将TestNG库添加到testing库中 ,并解决了问题。