Модераторы: LSD
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> jUnit. Событие завершения всех тестов 
:(
    Опции темы
Stifler
Дата 23.4.2010, 00:17 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 36
Регистрация: 18.5.2007

Репутация: нет
Всего: нет



Здравствуйте!
Запускаю тесты maven'ом. Мне необходимо отловить момент, когда все тесты завершены (как бы они завершены не были). В RunListener'е есть метод testRunFinished, который должен срабатывать, когда все тесты из класса завершены. Но если используется несколько классов с тестами (переменное кол-во. какие именно тесты запускать указывается в pom-файле), то надо бы отловить момент, когда закончится последний. Не подскажите, каким образом это можно сделать?
PM   Вверх
Stifler
Дата 24.4.2010, 12:15 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 36
Регистрация: 18.5.2007

Репутация: нет
Всего: нет



Попытался сделать так:

Мой test runner
Код

public class MySuite  extends Suite { 

    private final TestsRunListener myRunListener;

    public MySuite(final Class<?> klass, final RunnerBuilder builder) throws InitializationError {
        super(klass, builder);
        myRunListener = new TestsRunListener();
    }

  protected MySuite(final Class<?> klass, final Class<?>[] suiteClasses) throws InitializationError {
        super(klass, suiteClasses);
        myRunListener = new TestsRunListener();
    }

  @Override
    public void run(final RunNotifier rn) {
     rn.addListener(myRunListener);
     super.run(rn);
    }


}


Listener для отлова события завершения теста
Код

public class TestsRunListener extends RunListener {

    @Override
    public void testRunFinished(final Result result) throws Exception {
        LOGGER.debug("TEST RUN FINISHED");
        super.testRunFinished(result);
    }

    @Override
    public void testFinished(final Description description) throws Exception {
        LOGGER.debug("TEST FINISHED");
        super.testFinished(description);
    }

}


И сама suite, где Test1 и Test2 классы с тестами
Код

@RunWith(MySuite.class)
@SuiteClasses({Test1.class, Test2.class})
public class AllTests {

}


Запуская тесты maven'ом: mvn clean -D test=AllTests test, получаю неожиданный для меня результат.
В логе есть строки "TEST FINISHED", но ни одной строчки "TEST RUN FINISHED". Не определяется завершение запуска suite.
PM   Вверх
Stifler
Дата 29.4.2010, 16:51 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 36
Регистрация: 18.5.2007

Репутация: нет
Всего: нет



В общем, RunListener как-то не помог. Зато в MySuite в методе run можно сделать так:
Код

public class MySuite extends Suite {

    private final TestsRunListener myRunListener;
     
    //...

  @Override
    public void run(final RunNotifier rn) {
     rn.addListener(myRunListener);
     super.run(rn);
     LOGGER.info("ALL TESTS FINISHED");
    }
}


Всё, что мне необходимо я сделал после super.run(). Вроде бы пока работает, не знаю, может какие в последствие косяки вылезут...
PM   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Java: Design, Quality, Testing | Следующая тема »


 




[ Время генерации скрипта: 0.0396 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.