it-roy-ru.com

"Разветвленная Ява VM вышла ненормально "ошибка из тестов junit

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

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

Разбитая Java VM вышла ненормально . Обратите внимание на время в отчете не отражает время до виртуальной машины выход.

Трассировки стека

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

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

42
Alb

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

19
Prashanth

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

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

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

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

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

7
Tristan

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

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

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

4
Alex C

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

4
Sharebear

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

3
Brian Agnew

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

2
Francis Upton

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

1
ankit jain

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

1
triggerNZ

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

и это сработало.

0
user1164061

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

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

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

Так что в моем случае это просто отсутствующая библиотека или конфликт версий JUnit.

0
JPS

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

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

в

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

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

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

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

0
andrea

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

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

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

0
Dan Haynes

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

С уважением Клас

0
KlasE

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

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

0
ChikoFerrara

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

Решением было создать pathing jar . Упрощенные шаги:

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

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

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

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

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

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

0
Jason D