Java « Порядок вызова тестов в JUNIT
1 ответов
вообще-то тесты должны быть независимы друг от друга
если нужен определенный порядок - объедините в 1 юнит тест
если дело в инициализации - http://junit.sourceforge.net/doc/faq/faq.htm#organize_3
как вариант - вот кто-то решал проблему
Напишите свой TestRunner.
Именно так поступает Spring framework, он также добавляет свои аннотации над методами тестов, например для отката транзакиций при тестировании DAO / Service слоя приложения и т.д.
Примеры: org.springframework.test.context.junit4.SpringJUnit4ClassRunner
Рекомендую изучить его исходный код и все аннотации что идут (работают) вместе с этим классом в Spring.
TestRunner регистрируется с помощью аннотации org.junit.runner.RunWith над классом с тестами.
Вы можете обявить свою аннотацию над методом, типа @Ordered(order = 23):
@RunWith(OrderedTestRunner.class)
public class OrderedTests {
@Test
@Ordered(order = 23)
public void someTest() {
// stub
assertTrue( Boolean.TRUE );
}
}
Ваш OrderedTestRunner будет работать с TestContextManager-ом в котором будут ваши необходимые ExecutionListener-ы, в одном из которых будет тот Listener который и будет работать с аннотацией Ordered.
Посмотрите мою заметку на эту тему:
Как запускать junit тесты в том порядке, в котором они находятся в исходном коде, и почему это не лучшая идея:
Порядок выполнения junit тестов