Перейти к содержимому

Фотография

Запуск тестов с помощью org.junit.runner.JUnitCore


  • Авторизуйтесь для ответа в теме
Сообщений в теме: 8

#1 horror_nord

horror_nord

    Новый участник

  • Members
  • Pip
  • 9 сообщений

Отправлено 10 марта 2009 - 13:59

Пишу небольшую програмулинку, чтобы из нее запускать тесты на выполнение, откапал в JUnit класс JUnitCore.

Сделал кнопку, таблику, навешал на кнопку запуск main класса из JUnitCore с передачей ему моих классов-тестов... Все хорошо, тесты запускаются, НО, по завершении тестирования закрывается ВСЕ приложение, а мне необходимо, чтобы приложение было активно и можно было кликнуть по кнопке сново... Не подскажите, как это можно обойти? Как сделать чтоб тесты запускались отдельно от основного приложения и при завершении тестов лишь выдавали соответствующее сообщение в консоль, а не убивало мое главное окно?

Вот код запуска тестов:

[codebox]//Если нажата кнопка "Запуск"
if(ae.getActionCommand().equals("start")) {
SwingUtilities.invokeLater(new Runnable() {
public void run() {
JUnitCore.main(Start.getTableStrings());
}
});
}[/codebox]
  • 0

#2 vitorg

vitorg

    Опытный участник

  • Members
  • PipPipPipPip
  • 408 сообщений

Отправлено 10 марта 2009 - 20:43

Скорее всего где-то там (не в твоём коде) есть System.exit(0), насколько помню, это сразу прибивает JVM, ищи способ обойти.
  • 0

#3 horror_nord

horror_nord

    Новый участник

  • Members
  • Pip
  • 9 сообщений

Отправлено 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).
  • 0

#4 KaNoN

KaNoN

    АЦЦКИЙ СОТОНА

  • Members
  • PipPipPipPipPipPip
  • 1 260 сообщений
  • ФИО:Колесник Николай
  • Город:Днепропетровск > Киев > Лондон

Отправлено 11 марта 2009 - 15:38

Немного не по теме, но, думаю, полезно будет знать, чтобы углубляться в самоделки только тогда, когда готовых решений, учитывающих вашу специфику, нет. А в данном случае уже есть готовые решения.

Посмотрите в направлении ANT, как им пользоваться, как через него выполнить вызов JUnit-тестов. После этого, посмотрите на такую штуку как Hudson. В итоге вы получите приложение, у которого будет много кнопочек, нажатие на которые может вызвать на выполнение тесты в нужной вам комбинации, а также хранить результаты каждого из запусков.

Не тратьте время на изобретение велосипеда для второстепенных задач.
  • 0

#5 horror_nord

horror_nord

    Новый участник

  • Members
  • Pip
  • 9 сообщений

Отправлено 12 марта 2009 - 12:47

Немного не по теме, но, думаю, полезно будет знать, чтобы углубляться в самоделки только тогда, когда готовых решений, учитывающих вашу специфику, нет. А в данном случае уже есть готовые решения.

Посмотрите в направлении ANT, как им пользоваться, как через него выполнить вызов JUnit-тестов. После этого, посмотрите на такую штуку как Hudson. В итоге вы получите приложение, у которого будет много кнопочек, нажатие на которые может вызвать на выполнение тесты в нужной вам комбинации, а также хранить результаты каждого из запусков.

Не тратьте время на изобретение велосипеда для второстепенных задач.


А можно ссылочку на Hudson?
  • 0

#6 KaNoN

KaNoN

    АЦЦКИЙ СОТОНА

  • Members
  • PipPipPipPipPipPip
  • 1 260 сообщений
  • ФИО:Колесник Николай
  • Город:Днепропетровск > Киев > Лондон

Отправлено 13 марта 2009 - 10:20

Немного не по теме, но, думаю, полезно будет знать, чтобы углубляться в самоделки только тогда, когда готовых решений, учитывающих вашу специфику, нет. А в данном случае уже есть готовые решения.

Посмотрите в направлении ANT, как им пользоваться, как через него выполнить вызов JUnit-тестов. После этого, посмотрите на такую штуку как Hudson. В итоге вы получите приложение, у которого будет много кнопочек, нажатие на которые может вызвать на выполнение тесты в нужной вам комбинации, а также хранить результаты каждого из запусков.

Не тратьте время на изобретение велосипеда для второстепенных задач.


А можно ссылочку на Hudson?

Начинаем вот отсюда. Там можно перейти в раздел Installation, где указано, что откуда брать и как ставить. Фактически данное решение представляет собой war файл, который надо задеплоить в apache.
  • 0

#7 vitorg

vitorg

    Опытный участник

  • Members
  • PipPipPipPip
  • 408 сообщений

Отправлено 13 марта 2009 - 10:24

Начинаем вот отсюда. Там можно перейти в раздел Installation, где указано, что откуда брать и как ставить. Фактически данное решение представляет собой war файл, который надо задеплоить в apache.

В Apache задеплоить war не получится, т.к. он не является сервлет-контейнером, скорее всего имелся ввиду Apache Tomcat.
  • 0

#8 KaNoN

KaNoN

    АЦЦКИЙ СОТОНА

  • Members
  • PipPipPipPipPipPip
  • 1 260 сообщений
  • ФИО:Колесник Николай
  • Город:Днепропетровск > Киев > Лондон

Отправлено 13 марта 2009 - 10:30

Начинаем вот отсюда. Там можно перейти в раздел Installation, где указано, что откуда брать и как ставить. Фактически данное решение представляет собой war файл, который надо задеплоить в apache.

В Apache задеплоить war не получится, т.к. он не является сервлет-контейнером, скорее всего имелся ввиду Apache Tomcat.

Да, именно так. Я не уточнил этого, так как по данному вопросу надо было только указать, что нужен еще и веб-сервер. Hudson - это веб-приложение
  • 0

#9 horror_nord

horror_nord

    Новый участник

  • Members
  • Pip
  • 9 сообщений

Отправлено 16 марта 2009 - 06:21

Спасибо, посмотрю...
  • 0


Количество пользователей, читающих эту тему: 0

0 пользователей, 0 гостей, 0 анонимных