Когда использовать @RunWith и когда @ExtendWith - PullRequest
8 голосов
/ 21 марта 2019

Моя команда и я работали над множеством микросервисов, используя Spring boot. Поскольку сервисы прошли через обновления JUnit и Spring Boot (сейчас мы используем Spring Boot 2 и JUnit 5), различные JUnit, реализованные разными разработчиками, теперь используют разные шаблоны с:

  • @ ExtendWith
  • @ RunWith

Сегодня в чем разница между ними и нужны ли они нам для наших модульных тестов или они включены в новую аннотацию Spring Boot?

Ответы [ 3 ]

10 голосов
/ 21 марта 2019

Если вы используете версию Junit <5, то вы должны использовать <code>@RunWith(SpringRunner.class) или @RunWith(MockitoJUnitRunner.class) и т. Д.

Если вы используете версию Junit = 5, то вы должны использовать @ExtendWith(SpringExtension.class) или @ExtendWith(MockitoExtension.class) и т. Д.

  1. SpringRunner
  2. MockitoJUnitRunner
  3. SpringExtension
  4. MockitoExtension
3 голосов
/ 21 марта 2019

Ответ можно найти в документации :

Если вы используете JUnit 4, не забудьте добавьте @RunWith (SpringRunner.class) в ваш тест, иначе аннотации будут игнорироваться. Если вы используете JUnit 5, в этом нет необходимости добавить эквивалентный @ExtendWith (SpringExtension) как @SpringBootTest и другие @… аннотации к тесту уже помечены

.

1 голос
/ 21 марта 2019

@RunWith - это старая аннотация из JUnit 4 для использования тестовых бегунов. Если вы используете JUnit 5 (Jupiter), вы должны использовать @ExtendWith для использования расширений JUnit.

...