Запуск тестов с помощью org.junit.runner.JUnitCore
#1
Отправлено 10 марта 2009 - 13:59
Сделал кнопку, таблику, навешал на кнопку запуск main класса из JUnitCore с передачей ему моих классов-тестов... Все хорошо, тесты запускаются, НО, по завершении тестирования закрывается ВСЕ приложение, а мне необходимо, чтобы приложение было активно и можно было кликнуть по кнопке сново... Не подскажите, как это можно обойти? Как сделать чтоб тесты запускались отдельно от основного приложения и при завершении тестов лишь выдавали соответствующее сообщение в консоль, а не убивало мое главное окно?
Вот код запуска тестов:
[codebox]//Если нажата кнопка "Запуск"
if(ae.getActionCommand().equals("start")) {
SwingUtilities.invokeLater(new Runnable() {
public void run() {
JUnitCore.main(Start.getTableStrings());
}
});
}[/codebox]
#2
Отправлено 10 марта 2009 - 20:43
#3
Отправлено 11 марта 2009 - 06:15
Скорее всего где-то там (не в твоём коде) есть System.exit(0), насколько помню, это сразу прибивает JVM, ищи способ обойти.
Действительно, откапал исходники JUnit 4.5, вот что увидел:
main вызывает метод runMainAndExit:
public static void main(String... args) { runMainAndExit(new RealSystem(), args); }
В свою очередь в методе runMainAnExit вызывается метод runMain, а затем System.exit
public static void runMainAndExit(JUnitSystem system, String... args) { Result result= new JUnitCore().runMain(system, args); system.exit(result.wasSuccessful() ? 0 : 1);}
Чтобы это обойти, достаточно самому вызывать метод runMain и вручную обрабатывать результат его выполнения (Result).
#4
Отправлено 11 марта 2009 - 15:38
Посмотрите в направлении ANT, как им пользоваться, как через него выполнить вызов JUnit-тестов. После этого, посмотрите на такую штуку как Hudson. В итоге вы получите приложение, у которого будет много кнопочек, нажатие на которые может вызвать на выполнение тесты в нужной вам комбинации, а также хранить результаты каждого из запусков.
Не тратьте время на изобретение велосипеда для второстепенных задач.
#5
Отправлено 12 марта 2009 - 12:47
Немного не по теме, но, думаю, полезно будет знать, чтобы углубляться в самоделки только тогда, когда готовых решений, учитывающих вашу специфику, нет. А в данном случае уже есть готовые решения.
Посмотрите в направлении ANT, как им пользоваться, как через него выполнить вызов JUnit-тестов. После этого, посмотрите на такую штуку как Hudson. В итоге вы получите приложение, у которого будет много кнопочек, нажатие на которые может вызвать на выполнение тесты в нужной вам комбинации, а также хранить результаты каждого из запусков.
Не тратьте время на изобретение велосипеда для второстепенных задач.
А можно ссылочку на Hudson?
#6
Отправлено 13 марта 2009 - 10:20
Начинаем вот отсюда. Там можно перейти в раздел Installation, где указано, что откуда брать и как ставить. Фактически данное решение представляет собой war файл, который надо задеплоить в apache.Немного не по теме, но, думаю, полезно будет знать, чтобы углубляться в самоделки только тогда, когда готовых решений, учитывающих вашу специфику, нет. А в данном случае уже есть готовые решения.
Посмотрите в направлении ANT, как им пользоваться, как через него выполнить вызов JUnit-тестов. После этого, посмотрите на такую штуку как Hudson. В итоге вы получите приложение, у которого будет много кнопочек, нажатие на которые может вызвать на выполнение тесты в нужной вам комбинации, а также хранить результаты каждого из запусков.
Не тратьте время на изобретение велосипеда для второстепенных задач.
А можно ссылочку на Hudson?
#7
Отправлено 13 марта 2009 - 10:24
В Apache задеплоить war не получится, т.к. он не является сервлет-контейнером, скорее всего имелся ввиду Apache Tomcat.Начинаем вот отсюда. Там можно перейти в раздел Installation, где указано, что откуда брать и как ставить. Фактически данное решение представляет собой war файл, который надо задеплоить в apache.
#8
Отправлено 13 марта 2009 - 10:30
Да, именно так. Я не уточнил этого, так как по данному вопросу надо было только указать, что нужен еще и веб-сервер. Hudson - это веб-приложениеВ Apache задеплоить war не получится, т.к. он не является сервлет-контейнером, скорее всего имелся ввиду Apache Tomcat.Начинаем вот отсюда. Там можно перейти в раздел Installation, где указано, что откуда брать и как ставить. Фактически данное решение представляет собой war файл, который надо задеплоить в apache.
#9
Отправлено 16 марта 2009 - 06:21
Количество пользователей, читающих эту тему: 0
0 пользователей, 0 гостей, 0 анонимных