JUnit - остановить его от выхода на финише? - PullRequest
3 голосов
/ 30 марта 2010

Быстрый JUnit вопрос. Я запускаю несколько модульных тестов, которые включают запуск графического интерфейса и выполнение множества вещей.

Я хотел бы увидеть результаты после теста, чтобы подтвердить это визуально. Однако он доходит до конца кода и завершается, как и должно быть. Если я хочу переопределить это, я ставлю точку останова в последней строке теста. Это довольно неловко, хотя.

Есть ли какая-нибудь опция, чтобы остановить его выход?

Ответы [ 4 ]

2 голосов
/ 30 марта 2010

Поскольку во время выполнения теста вам требуется графический интерфейс и взаимодействие с пользователем, это скорее "функциональный" тест, чем "модульный" тест.

Вы можете записать результаты в файл в конце, это будет иметь дополнительное преимущество, так как вы сможете утверждать, что вывод корректен / представлен программно в конце. Если вы действительно хотите, чтобы тест продолжался, вы можете вставить бесконечный цикл в конце теста:

JUnit 3:

public void tearDown() {
    while (true) { Thread.sleep(2000); };
}

JUnit 4:

@After
public void tearDown() {
    while (true) { Thread.sleep(2000); };
}

Это сохранит работу потока JUnit, но вам нужно будет убедиться, что ваши события GUI обрабатываются в другом потоке.

1 голос
/ 30 марта 2010

В Eclipse: запускать конфигурации ...> Тестировать> Поддерживать работу JUnit ...

0 голосов
/ 30 марта 2010

Как насчет использования обратного отсчета , который вы отсчитываете.

частный статический отсчет CountDownLatch = новый CountDownLatch (1);

@AfterClass
public static void tearDownClass() throws Exception {
    countdown.await();
}

Тогда где-то еще в вашем коде вы отсчитываете защелку на событии.

countdown.countDown();

Когда вызывается countdown.countDown(), countdown.await() будет продолжаться.

0 голосов
/ 30 марта 2010

Одна из возможностей состоит в том, что ваш тест JUnit выполняет метод tearDown (), возможно, в базовом классе, который закрывает графический интерфейс. Если это так, вы можете переопределить метод tearDown () в своем тесте JUnit, чтобы предотвратить это поведение. Э.Г.

protected void tearDown()
{
   //do nothing
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...