1. Введение
В этом кратком руководстве мы обсудим использование аннотации @RunWith
в среде JUnit 5.
В JUnit 5 аннотация @RunWith
была заменена более мощной аннотацией @ExtendWith
.
Однако аннотацию @RunWith
по- прежнему можно использовать в JUnit 5 для обратной совместимости.
2. Запуск тестов с помощью средства запуска на основе JUnit 4
Мы можем запускать тесты JUnit 5 с любой старой средой JUnit, используя аннотацию @RunWith
.
Давайте рассмотрим пример запуска тестов в версии Eclipse, которая поддерживает только JUnit 4.
Во-первых, давайте создадим класс, который мы собираемся протестировать:
public class Greetings {
public static String sayHello() {
return "Hello";
}
}
Затем мы создадим простой тест JUnit 5:
public class GreetingsTest {
@Test
void whenCallingSayHello_thenReturnHello() {
assertTrue("Hello".equals(Greetings.sayHello()));
}
}
Наконец, давайте добавим эту аннотацию, чтобы мы могли запустить тест:
@RunWith(JUnitPlatform.class)
public class GreetingsTest {
// ...
}
Класс JUnitPlatform
— это средство запуска на основе JUnit 4, которое позволяет нам запускать тесты JUnit 4 на платформе JUnit.
Имейте в виду, что JUnit 4 не поддерживает все функции новой платформы JUnit, поэтому этот раннер имеет ограниченную функциональность.
Если мы проверим результаты теста в Eclipse, то увидим, что использовался бегун JUnit 4:
3. Запуск тестов в среде JUnit 5
Теперь давайте запустим тот же тест в версии Eclipse, которая поддерживает JUnit 5. В этом случае нам больше не нужна аннотация @RunWith
, и мы можем написать тест без бегуна:
public class GreetingsTest {
@Test
void whenCallingSayHello_thenReturnHello() {
assertTrue("Hello".equals(Greetings.sayHello()));
}
}
Результаты теста показывают, что теперь мы используем бегун JUnit 5:
4. Миграция с исполнителя на основе JUnit 4
Теперь давайте перенесем тест, использующий средство выполнения на основе JUnit 4, на JUnit 5.
Мы собираемся использовать тест Spring в качестве примера:
@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration(classes = { SpringTestConfiguration.class })
public class GreetingsSpringTest {
// ...
}
Если мы хотим перенести этот тест на JUnit 5, нам нужно заменить аннотацию @RunWith
новой @ExtendWith
:
@ExtendWith(SpringExtension.class)
@ContextConfiguration(classes = { SpringTestConfiguration.class })
public class GreetingsSpringTest {
// ...
}
Класс SpringExtension
предоставляется Spring 5 и интегрирует Spring TestContext Framework в JUnit 5. Аннотация @ExtendWith
принимает любой класс, реализующий интерфейс Extension .
5. Вывод
В этой краткой статье мы рассмотрели использование аннотации JUnit 4 @RunWith
в среде JUnit 5.
Полный исходный код этой статьи доступен на GitHub .