JUnit 4(工作)
IntelliJ IDEA 2018.2.3(社区版)中的 Kotlin 多平台模板依赖于 JUnit 4.12build.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(一些较旧的示例使用自 Gradle 4.6 以来已被弃用junit-platform-gradle-plugin
)。关于如何设置的文档已经过时且稀缺:
- 如上图,IntelliJ 内置的默认项目模板没有使用 JUnit 5。
- JUnit 团队提供了示例,但不提供 Kotlin 多平台。
当我尝试基于 JUnit 5 Gradle 示例build.gradle
为项目的 JVM 部分设置时,我可以使用 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"
奇怪的是,当gradle test
在 JVM 项目上运行时,有时测试结果会出现在 IntelliJ 的测试结果中,但是当重新运行测试时,会出现“未收到测试事件”的消息。边距中的“运行”图标永远不会出现在源文件中,上下文菜单中的测试选项也不会出现。
其他人似乎也有类似的问题,但尚不清楚这些问题是否相同/相关或已解决,因为:
- Junit 5 和 Gradle 4.6 检查任务显示“未收到测试事件”
- junit5 测试未显示在测试视图中
- 左侧没有“运行”图标,用于多平台项目公共部分的测试
- Kotlin 多平台项目在 IDEA 中运行通用模块测试
许多不同的版本、过时的文档和类似的问题使得很难找到有关此问题的更多信息。