Подтвердить что ты не робот

"Ошибка вилки Java VM вышла аномально" из тестов junit

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

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

Витая Java VM вышла из строя аномально. Обратите внимание на время в отчете не отражает время, пока виртуальная машина выход.

StackTrace

junit.framework.AssertionFailedError: Вилка Java VM вышла аномально. Обратите внимание на время в отчете не отражает время, пока виртуальная машина выход.

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

4b9b3361

Ответ 1

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

Ответ 2

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

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

Я использую ant 1.7.1, поэтому нет надежды с обновлением ant.

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

Я держу fork в "нет", чтобы убедиться, что ant использует параметры.

Ответ 3

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

Ответ 4

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

Ответ 5

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

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

В моем случае бросалось исключение IllegalArgumentException.

Ответ 6

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

Ответ 7

У меня есть несколько junit jars в моем пути к классам. один из ant, а другой - от WAS. Поскольку я удалил, что ошибка ушла... ant версия, которую я использую 1.8

Ответ 8

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

Ответ 9

Я решил проблему, установив следующую переменную среды:

Переменная: _JAVA_OPTIONS Значение: -Xms128m -Xmx512m

Ответ 10

Для нас на самом деле мы случайно (используем новую версию eclipse) начали использовать Ant 1.7.x вместо нашей старой версии Ant, которая была совместима с нашим Weblogic 8.1/JDK 1.4.x Окружающая среда. Мы исправили это, изменив Ant Home in Eclipse- > Windows- > Preferences → Ant → Runtime на нашу старую версию Ant.

Отношения Клас

Ответ 11

Я столкнулся с той же проблемой. Проблема заключалась в генерации байтового кода с издевательством над классом 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;

и он работал.

Ответ 12

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

Для меня решение одной и той же задачи было простым:

Просто добавьте JUnit-Library в проект properties = > Libraries = > Compile Tests и Run Tests.

Итак, в моем случае это была просто недостающая библиотека или конфликт версии JUnit.

Ответ 13

В моем случае это неперехваченное исключение в статическом инициализаторе/методе/блоке внутри класса.

В частности, у меня был один класс, вызывающий статический метод в другом классе, и он запускал исключение NumberFormatException.

Кстати, добавление "showoutput = true" в задачу в файле build.xml не помогло устранить неполадки. Поскольку статический блок является одной из первых задач, запускаемых JVM, прежде чем он смог вывести что-нибудь вообще.

Ответ 14

У меня тоже была эта проблема. Изменение задачи junit:

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

к

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

исправил это для меня. Я не совсем понимаю эту область ant, хотя или почему это исправляет ее. В моем сценарии это была ошибка в "BeforeFirstTest", и я думаю, что это barfs из-за двух ant файлов в моем пути к классам (что, вероятно, я должен исправить)

Я думаю, что проблема связана с одной из версий ant: http://track.pmease.com/browse/QB-500;jsessionid=C1CF6999CBBDB5097A9CFCF4A11AF6C0?page=com.atlassian.jira.plugin.system.issuetabpanels:all -tabpanel

ETA: Я думаю, что batchtest = "no" фактически изменяет путь к классам и, следовательно, приводит к исключению моей оскорбительной ant jar.

Ответ 15

В моем случае путь к классам, в котором выполнялись мои тесты, превышал максимальную длину того, что было разрешено операционной системой для переменной окружения (aka слишком длинной проблемой класса Class).

Решение заключалось в создании pathing jar. Упрощенные шаги:

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

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

Класс-путь: MyProject.jar

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

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

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

Ответ 16

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