2016-07-08 3 views
1

Привет, У меня есть требование запуска одного из моих тестовых методов после завершения определенного метода. Несмотря на то, что тесты должны быть независимыми в соответствии с How to run test methods in specific order in JUnit4?.JUnit запускает методы в том же порядке, что и в файле

Существует другой хак для этого является использование

@FixMethodOrder (MethodSorters.NAME_ASCENDING)

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

+3

порядок объявления, насколько мне известно, не доступен во время выполнения. –

+3

IMHO это не очень хороший вопрос, потому что явно против духа Unit Testing полагаться на определенный порядок. Гораздо лучший вопрос - спросить, как сделать ваши тесты независимыми, учитывая ваши требования. – martinhh

+0

Тестирование должно выполняться независимо, а предварительные тестовые действия должны выполняться с помощью аннотации @Before. – UserF40

ответ

1

Существует очень важный момент, почему вы не должны начинать придумывать такие требования.

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

Смысл: когда внезапно, единичный тест терпит неудачу (потому что кто-то что-то изменил где-то), то вы хотите как можно скорее найти основную причину этой проблемы. Все, что мешает вам добраться до этой цели, делает ваш модульный тест менее ценным для вас!

Вещи, которые делают его более трудным для вас, чтобы найти ногу причина будет:

  1. обширна «экстернализированы» Настройка - когда вы начинаете использовать (слишком много) наследование для тестовых случаев
  2. сложных отношений между ваши методы тестирования (например: ваша идея)

Короткий рассказ: юнит-тесты не предназначены для работы в каком-либо конкретном порядке. Итак, вместо того, чтобы тратить много времени на то, чтобы JUnit в угол, где он не хочет быть ... отступить на секунду, и пересмотреть , почему вы считаете, что вам нужно, чтобы все было так.

+0

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

1

Начиная с Java 7, JDK больше не гарантирует порядок, в котором методы в классе будут возвращены при просмотре через отражение (в качестве такой структуры, как JUnit).

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

Как вы заметили, единственная альтернатива потенциально случайному упорядочению - @FixMethodOrder(MethodSorters.NAME_ASCENDING) в JUnit 4 на JDK 7+.

Смежные вопросы