Задача организовать удобное UNIT и интеграционное тестирование.
Пример проекта с gradle https://github.com/cherepakhin/vacancy_backend
Зачем? Интеграционные тесты должны быть отделены от unit тестов, т.к. нет смысла проводить интеграционное тестирование, если unit тесты упали (аксиома, но оказывается, это нужно говорить). Кратко:
В build.gradle.kts (пример) добавить:
tasks.withType { useJUnitPlatform() // Show test log testLogging { // events("standardOut", "started", "passed", "skipped", "failed") events("passed", "skipped", "failed") } // for run Integration test: ./gradlew test -Dtest.profile=integration if (System.getProperty("test.profile") != "integration") { exclude("**/*IntegrationTest*") } }
При этом Unit тесты запускаются, как обычно (интеграционные тесты будут пропущены):
./gradlew test
Для прогона интеграционных тестов выполнить:
./gradlew test -Dtest.profile=integration
Ссылки:
Интеграционное тестирование с JUnit
@Before @After в тестах
Простой проект на Kotlin и Spring Boot
BDDMockito - возможности в форме, более подходящей для BDD
Quick Guide to BDDMockito (Baeldung)