Как стать автором
Обновить

Комментарии 13

никогда нельзя быть уверенным, в какой очередности пройдут тесты
У вас проект антом собирается?
Да, антом.
Понятно. С мавеном такой проблемы нет.
Мне казалось, что это проблема на уровне jUnit. Сборщику мы просто говорим выполнить класс.
С антом, к счастью, не часто приходилось работать, поэтому не могу ничего сказать. В мавене выполнением тестов занимается отдельный плагин. Если я правильно помню, тесты в классе он выполняет в алфавитном порядке. В 7-й версии TeamCity, кстати, появилась возможность фейлить билд если определенный текст встречается в билд логе — вам могло бы быть полезно =)
Дык в этом-то и проблема — в TeamCity есть бага (или недоделка) из-за которой он не воспринимает сервисные команды из билд лога тестов. В начале поста есть ссылка на багтрекер JetBrains`а. А что касается порядка тестов, то мне кажется иногда бывает очень полезно сделать порядок тестов на свое усмотрение.
Мне всегда казалось, что результат выполнение одного unit теста ни в коем случае не должен зависеть от результата выполнения предыдущего. Я ошибаюсь?
Если Вы имеете ввиду относительно этой модели, то здесь оно и не зависит. Класс тестов может содержать общие поля. Такие, как url приложения, логин / пароль и т.п. Если же в ходе тестового метода меняются какие-то общие поля тестового класса, то можно добавить что-то типа:

@Before
public void clear()
{
     //Очищаем общие поля
}


Хотя это конечно будет не правильно. ИМХО каждый тестовый метод должен работать только в самом себе и не менять ничего общего.
Я на самом по поводу этого:
Например, никогда нельзя быть уверенным, в какой очередности пройдут тесты.

Пройдут они в другой последовательности – результат от этого не должен поменяться.
В этом случае, я имел ввиду немного другое. В моей ситуации (не классических юнит-тестов), мне нужно было запускать Тест3 только в том случае, если прошли Тест1 и Тест2. Используя предлагаемую модель, это сделать очень просто, не запихивая все в один тест.
В JUnit действительно отсутствует поддержка зависимостей между тестами или упорядоченное исполнение тестов.

Все это реализовано в другом фреймворке: TestNG. Чтобы не заниматься поддержкой собственных «велосипедов» вам стоит взглянуть на него.

Что касается TeamCity, то в его задачи не входит поддержка порядка исполнения тестов. Зато входит необходимость как можно раньше сообщить об упавших/исправленных тестах. Для этого имеет смысл выполнить падавшие недавно тесты как можно раньше, т.е., изменить порядок исполнения.
Отличная ссылка, спасибо!
Зарегистрируйтесь на Хабре, чтобы оставить комментарий

Публикации

Изменить настройки темы

Истории