Как настроить JUnit 5 в мультиплатформенном проекте Kotlin с использованием Gradle и IntelliJ? - PullRequest
0 голосов
/ 12 сентября 2018

JUnit 4 (работает)

Мультиплатформенный шаблон Kotlin в IntelliJ IDEA 2018.2.3 (Community Edition) использует JUnit 4.12 в build.gradle для части проекта JVM:

plugins {
    id 'kotlin-platform-jvm' version '1.2.61'
}
repositories {
    mavenCentral()
}

dependencies {
    compile "org.jetbrains.kotlin:kotlin-stdlib-jdk8"
    expectedBy project(":TestMulti-common")
    testCompile "junit:junit:4.12"
    testCompile "org.jetbrains.kotlin:kotlin-test"
    testCompile "org.jetbrains.kotlin:kotlin-test-junit"
}

compileKotlin {
    kotlinOptions.jvmTarget = "1.8"
}
compileTestKotlin {
    kotlinOptions.jvmTarget = "1.8"
}
sourceCompatibility = "1.8"

Используя этот шаблон, я могу добавить тесты в общую часть проекта, и IntelliJ распознает тесты : на полях исходных файлов появляется значок «Выполнить», и тесты могут бытьзапустить через контекстное меню.

JUnit 5 (тесты не распознаются должным образом в IntelliJ)

Как мне выполнить аналогичную настройку, используя JUnit 5?

Примечательно, что я использую Gradle 4.10 (в некоторых более старых примерах используется junit-platform-gradle-plugin, который устарел с Gradle 4.6 ).Документация о том, как это настроить, устарела и недостаточна:

Когда я пытаюсь настроить build.gradle для части JVM проекта на основе примера JUnit 5 Gradle , Я могу запускать тесты с помощью Gradle , но IntelliJ, похоже, не распознает мои тесты .

plugins {
    id 'kotlin-platform-jvm' version '1.2.61'
}
repositories {
    mavenCentral()
}

dependencies {
    compile "org.jetbrains.kotlin:kotlin-stdlib-jdk8"
    expectedBy project(":TestMulti-common")

    testCompile "org.jetbrains.kotlin:kotlin-test"
    testCompile "org.jetbrains.kotlin:kotlin-test-junit5"

    testCompile('org.junit.jupiter:junit-jupiter-api:5.3.1')
    testCompile('org.junit.jupiter:junit-jupiter-params:5.3.1')
    testRuntime('org.junit.jupiter:junit-jupiter-engine:5.3.1')
}

test {
    useJUnitPlatform()
    testLogging {
        events "passed", "skipped", "failed"
    }
}

compileKotlin {
    kotlinOptions.jvmTarget = "1.8"
}
compileTestKotlin {
    kotlinOptions.jvmTarget = "1.8"
}
sourceCompatibility = "1.8"

Как ни странно, иногда результаты теста появляются в тесте IntelliJрезультаты при выполнении gradle test в проекте JVM, но при повторном запуске тестов появляется сообщение «Тестовые события не были получены» .Значки «Выполнить» на полях никогда не появляются в исходных файлах, как и параметры тестирования в контекстном меню.

У других людей, похоже, есть похожие проблемы, но неясно, являются ли они одинаковыми /связанные или были решены с тех пор:

Многочисленные выпуски, устаревшая документация и подобные проблемы затрудняют поиск дополнительной информации об этой проблеме.

...