Ошибка "Forked Java VM вышла ненормально" из тестов junit - PullRequest
44 голосов
/ 04 декабря 2009

У меня есть тест java junit, который проходит при запуске в одиночку на компьютере разработчика. У нас также есть задание hudson, которое запускает все тесты, вызываемые через ant, на узле Mac OS X 10.4 с Java 1.5. До недавнего времени тест проходил в сборке hudson, но теперь (без соответствующих изменений кода) один тест каждый раз завершается неудачей со следующей ошибкой:

Сообщение об ошибке

Forked Java VM вышла ненормально. Пожалуйста, обратите внимание на время в отчете не отражает время до ВМ выход.

StackTrace

junit.framework.AssertionFailedError: Развёрнутая Java VM вышла ненормально. Пожалуйста, обратите внимание на время в отчете не отражает время до ВМ выход.

поиск в Google показывает, что многие другие столкнулись с той же проблемой, но там я не смог найти никакого ответа.

Ответы [ 16 ]

21 голосов
/ 29 марта 2013

Я столкнулся с подобной проблемой. Я выполнил тесты джунтов как задачу муравья. Я добавил showoutput = "yes" ant junit и запустил задачу ant junit. Затем он показал трассировку стека исключений, которая привела к выходу разветвленного jvm.

7 голосов
/ 07 января 2010

Для меня это был "java.lang.OutOfMemoryError" в разветвленной виртуальной машине (задача junit с fork = "yes"), из-за которой это сообщение появилось в основной виртуальной машине.

OutOfMemory был виден в журнале муравьев (ну, он виден, поскольку он все еще присутствует).

Я использую муравей 1.7.1, так что нет надежды на обновление муравья.

После добавления тех же параметров виртуальной машины в «Выполнить> Внешние инструменты> Внешние инструменты> JRE», чем в Eclipse.ini (-Xms40m -Xmx512m -XX: MaxPermSize = 256M), проблема решена.

Я держу форк в «нет», чтобы убедиться, что он использует параметры.

4 голосов
/ 02 мая 2012

Это может произойти, если генерируется необработанное исключение RuntimeException. К сожалению, задача junit ant не выводит исключение, поэтому нет простого способа определить основную причину. Вы можете обойти это, запустив тестовый пример из командной строки, где будет показано исключение.

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

В моем случае выдается исключение IllegalArgumentException.

4 голосов
/ 06 декабря 2009

Мне кажется, я видел эту ошибку однажды, когда у меня появилось несколько версий junit на моем classpath Может стоит проверить.

3 голосов
/ 04 декабря 2009

Виртуальная машина падает? Можете ли вы найти файл дампа (называемый hs_err_pid*.log)? Если это так, файл дампа даст вам понять, почему это происходит с ошибкой.

2 голосов
/ 04 декабря 2009

У меня была эта проблема, и оказалось, что процесс фактически вызывал System.exit (). Однако в Ant была также ошибка, которая иногда появлялась. Я думаю, что Ant 1.7.1 исправил ошибку. Поэтому убедитесь, что вы используете эту версию.

1 голос
/ 09 ноября 2011

В моем классе есть несколько банок джунита. один от муравья, а другой от БЫЛ. Как я удалил, что ошибка ушла ... Ant версия, которую я использую 1.8

1 голос
/ 14 декабря 2009

У меня было то же самое некоторое время назад. Проблема в том, что System.exit () где-то вызывается. Однако это может быть трудно найти, поскольку вызов может исходить либо из вашего кода, либо из одной из используемых вами библиотек.

0 голосов
/ 16 октября 2017

В моем случае, classpath, на котором выполнялись мои тесты, превысил максимальную длину, допустимую операционной системой для переменной среды (иначе говоря, слишком длинный выпуск Linux Classpath).

Решение было создать

jar pathing . Упрощенные шаги:

  1. Используйте jar (или вашу IDE) для создания jar вашего проекта, мы назовем его MyProject.jar

  2. Создайте файл с именем Manifest.txt с текстом

Путь к классу: MyProject.jar

  1. Запустите командную строку jar this

jar cfm PathingJar.jar manifest.txt MyRootPackage / *. Class

Затем в вашем инструменте сборки запустите вашу тестовую директиву против самого jar-пути (не смешивайте другие классы или jar-файлы). Затем я смог запустить свои тесты без этого исключения.

0 голосов
/ 26 сентября 2017

Я добавил TestNG библиотеку к Тестовым библиотекам , и это исправило проблему.

...