Вы здесь:

Задача организовать удобное 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)