【问题标题】:Randomly test case fails - Forked JVM exits abnormally.随机测试用例失败 - 分叉的 JVM 异常退出。
【发布时间】:2012-02-06 15:54:28
【问题描述】:

我有一套 Junit 测试,每次我在本地运行时都会通过。我已经设置了一个运行套件的工作,hudson 使用 ANT 来调用测试。这个套件在 hudson 机器中传递了很长一段时间。但是从最近 3 天开始,一项测试有时会失败(随机)。而且我们没有更改为代码。错误是:

错误信息

Forked Java VM exited abnormally. Please note the time in the report does not reflect the time until the VM exit.

堆栈跟踪

junit.framework.AssertionFailedError: Forked Java VM exited abnormally. Please note the time in the report does not reflect the time until the VM exit.

我在谷歌上找不到正确的答案。我查了here

但它似乎没有帮助。

哈德逊机详情: 视窗 2003 服务器 Java 1.6.0.29

【问题讨论】:

  • 在博客上作者提到不要分叉新的 JVM,但在我的情况下这是不可能的。它可能看起来重复,但这个问题也有解决方案:)
  • 在 hudson 构建项目时检查 ram 使用情况。我可能遇到了 java 错误。
  • 尽可能使用 64 位版本。增加分叉的 java vm 的堆大小 (MX) 和 PermGen 大小。
  • 您可能想多描述一下有问题的测试本身?任何并发问题?来自其他测试的不正确的上下文传播(例如,通过数据库或静态类成员的共享状态)?原生方法调用?

标签: java ant junit jvm hudson


【解决方案1】:

您仍然可以访问失败的 Hudson 构建的控制台日志吗?如果 JVM “意外”退出,您可能会发现 JVM 错误导致它崩溃,这不会出现在 JUnit 日志中(我假设这是您获得错误消息/堆栈跟踪的地方),但可能会在 Ant 的输出中执行。

或者:

  • 您运行的是哪个版本的 Ant?我听说 Ant 1.7.1 之前的一个错误导致在某些情况下调用 System.exit()
  • 您可能需要检查您的代码是否没有捕获任何不应出现的异常(例如 catch Throwable)。

【讨论】:

    猜你喜欢
    • 2013-03-06
    • 1970-01-01
    • 2010-12-23
    • 2015-12-27
    • 2020-03-13
    • 2016-01-31
    • 2021-06-03
    • 1970-01-01
    相关资源
    最近更新 更多