我只想在我的 Kotlin 多平台
println(...)
代码中查看一些简单 commonTest
的输出。我的 build.gradle.kts
看起来有点像:
import org.jetbrains.kotlin.gradle.plugin.mpp.KotlinNativeTarget
plugins {
kotlin("multiplatform") version "1.3.61"
kotlin("plugin.serialization") version "1.3.61"
}
kotlin {
sourceSets {
val commonMain by getting { ... }
val commonTest by getting {
dependencies {
implementation("org.jetbrains.kotlin:kotlin-test-common")
implementation("org.jetbrains.kotlin:kotlin-test-annotations-common")
}
}
val jvmMain by getting { ... }
val jvmTest by getting {
dependencies {
implementation(kotlin("test-junit"))
}
}
// and so on ...
}
}
同时在
~/src/commonTest/kotlin/my/company/library/CommonTest.kt
:
package my.company.library
import kotlin.test.*
class CommonTest() {
@Test
fun testTrue() {
println("Hello, test!")
assertTrue(true)
}
}
目前我正在运行这样的测试
./gradlew jvmTest
我想看到
Hello, test!
显示在终端中。我不介意在命令行上多输入一点内容。
涉及SO的各种答案涉及
testLogging.showStandardStreams
指的是“标准”gradle测试目标,我不确定它如何或是否实际与多平台测试目标交互。
您可以通过将其添加到您的
build.gradle.kts
来使其工作:
tasks.withType<Test> {
testLogging {
showStandardStreams = true
}
}
将以下内容添加到您的 gradle 配置中:
iosTest {
testLogging {
events("PASSED", "FAILED", "SKIPPED")
exceptionFormat = "full"
showStandardStreams = true
showStackTraces = true
}
}
对于 JVM,它会类似,但在块下
jvmTest
。
就我而言,这有效:
afterEvaluate {
tasks.withType<AbstractTestTask> {
testLogging {
showStandardStreams = true
}
}
}
要在 Kotlin 多平台测试中启用标准输出,您需要在
STANDARD_OUT
配置中启用 testLogging
事件。
// kotlin dsl
tasks.withType<AbstractTestTask>().configureEach {
testLogging {
events = setOf(
TestLogEvent.STANDARD_OUT,
)
}
}