ice*_*awk 15 junit intellij-idea gradle kotlin
我已经用Kotlin和Junit 5编写了一些基本的单元测试。不幸的是,当我从Intellij IDEA运行它们时,Gradle找不到这些测试。我从Gradle收到消息“找不到给定的测试包括:[de.mhaug.phd.btcwallet.BasicTests]”,从Intellij收到消息“未收到测试事件”。
有趣的是,从命令行使用“ ./gradlew:clean:test”运行该命令可以报告构建成功。但是,我的第一个测试显然是红色的,因此这表明Gradle没有执行它。
我已经尝试使用更详细的输出来运行它,但是没有任何帮助。这是一个最小的(不是)工作示例:
package de.mhaug.phd.btcwallet
import org.junit.jupiter.api.Assertions.assertEquals
import org.junit.jupiter.api.Assertions.assertFalse
import org.junit.jupiter.api.Test
class BasicTests {
@Test
fun hey() {
assertEquals(3,1+1)
}
@Test
fun hey2() {
assertFalse(3==1+1)
}
}
Run Code Online (Sandbox Code Playgroud)
这是我的build.gradle:
buildscript {
ext.kotlin_version = '1.2.10'
repositories {
mavenCentral()
}
dependencies {
classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version"
}
}
group 'de.mhaug.phd'
version '1.0-SNAPSHOT'
apply plugin: 'kotlin'
repositories {
mavenCentral()
}
dependencies {
compile "org.jetbrains.kotlin:kotlin-stdlib-jdk8:$kotlin_version"
compile group: 'org.bouncycastle', name: 'bcprov-jdk16', version: '1.46'
testImplementation group: 'org.junit.jupiter', name: 'junit-jupiter-api', version: '5.0.2'
testRuntimeOnly group: 'org.junit.jupiter', name: 'junit-jupiter-engine', version: '5.0.2'
// testCompile group: 'org.junit.platform', name: 'junit-platform-runner', version: ''
// testCompile group: 'org.junit.jupiter', name: 'junit-jupiter-params', version: '5.0.2'
}
compileKotlin {
kotlinOptions.jvmTarget = "1.8"
}
compileTestKotlin {
kotlinOptions.jvmTarget = "1.8"
}
Run Code Online (Sandbox Code Playgroud)
如何使Intellij / Gradle执行测试?
Wes*_*Gun 10
不,@ JB Nizet的第一条评论指出:test.useJUnitPlatform()与JUnit 5依赖项一起添加。就是这样
http://junit.org/junit5/docs/current/user-guide/#running-tests-build-gradle
test {
useJUnitPlatform()
}
Run Code Online (Sandbox Code Playgroud)
要么:
dependency {
...
// junit 5
testImplementation ('org.junit.jupiter:junit-jupiter-api')
testCompile ('org.junit.jupiter:junit-jupiter-params')
testRuntime ('org.junit.jupiter:junit-jupiter-engine')
testCompile ('org.mockito:mockito-junit-jupiter')
test.useJUnitPlatform() // fix "test events not received" bug in IDEA
}
Run Code Online (Sandbox Code Playgroud)
支持他的评论,而不是这个答案!
我认为您未运行测试的特定问题已经或将会通过将所有内容更新到最新版本(Gradle、Kotlin、IntelliJ 等)来解决。目前一切都进展得非常快,因此必须保持最新状态。
关于“未收到测试事件”
据我所知,这是预料之中的。关键是,在使用 Gradle 任务时,要么相信您的测试已运行,要么找到一种显示每个测试日志记录的方法。
您需要区分“执行 gradle 任务”或“使用 IntelliJ 运行测试”(例如,通过单击测试旁边的装订线图标)。
从 IntelliJ 运行。
IntelliJ 与 Gradle 完美集成,从某种意义上说,如果您从 IntelliJ 运行,那么它不仅会运行测试(通过 Gradle?),还会显示一些不错的测试结果。所有这些都可以与 JUnit 5、Kotlintest、Spek 配合使用,使用普通的 Gradle 或 Gradle Kotlin DSL 或任何您使用的东西。
无耻的自我广告:JUnit 5 和 Gradle(还显示 Gradle 测试日志记录):如何将 JUnit 5 与 Gradle 一起使用? 和 JUnit 5、Kotlintest 和 Gradle Kotlin DSL:如何使用 Gradle Kotlin DSL 运行 kotlintest 测试?
运行 Gradle 任务。
但是,当您使用 Gradle 工具窗口运行 Gradle 任务时,您将看到您提到的“未收到测试事件”。我认为这是因为您只是运行一个运行测试的 Gradle 任务,这与 IntelliJ 本身没有任何关系,它没有集成它报告结果 - 它只是打印到命令行。
例如与运行 Kotlin 进行比较。当您使用 Gradle 任务时,它将以build/. 但是,当您使用装订线图标运行 main 方法时,因此使用 IntelliJ,它将以out/. 这是两个不同的事情在运行。
| 归档时间: |
|
| 查看次数: |
5980 次 |
| 最近记录: |