Spring Boot имеет концепцию тестовых срезов. Этот тип тестовой конфигурации настроит только часть вашего приложения и, следовательно, сделает тесты:
- с меньшей вероятностью сломается при несвязанных изменениях,
- быстрее по сравнению с настройкой всего приложения сервисы (с использованием
@SpringBootTest
аннотации).
Например, срез @JsonTest
настроит ObjectMapper (и некоторые тестовые утилиты для JSON) так же, как это будет происходить на производстве.
В любом случае, для указанных вами типов:
- DAO - используйте
@DataJpaTest
slice - он настроит Hibernate с базой данных в памяти и загрузить все ваши сущности и репозитории. - Контроллеры - используйте
@WebMvcTest(YourController.class)
slice - он загрузит только конфигурацию для Spring MVC, советы и ваш контроллер. Вы будете нести ответственность за работу с зависимостями этого контроллера . - Службы - в значительной степени зависит от того, что делает ваша служба. Я предпочитаю использовать слайсы также для сервисов, зависящих от bean-компонентов, сконфигурированных Spring, но ваш тест также может быть очень простым стандартным [j] модульным тестом со всеми вычеркнутыми зависимостями. - В зависимости от компромисса, который вы хотите сделать.
Это не изменится с пятой версией junit. Разница лишь в том, что вам больше не нужно комментировать свои тесты с помощью @RunWith(SpringRunner.class)
.