"Ошибка вилки 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 показывает, что многие другие, похоже, столкнулись с одной и той же проблемой, но там я не мог найти ответа.
Ответы
Ответ 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
- Запустите командную строку jar
jar cfm PathingJar.jar manifest.txt MyRootPackage/*. class
Затем, в вашем инструменте построения, запустите свою тестовую директиву самостоятельно (не смешивайте другие классы или банки). Затем мне удалось запустить мои тесты без этого исключения.
Ответ 16
Я добавил библиотеку TestNG
в тестовые библиотеки и исправил эту проблему.