我已经设置了一个kotlin跨平台项目,并希望运行junit测试。
但是一个
gradle clean build
只提供:
Kotlin Multiplatform Projects are an experimental feature.
BUILD SUCCESSFUL in 1s
9 actionable tasks: 9 executed
这是我的build.gradle:
buildscript {
ext.kotlin_version = '1.4.0-rc'
}
plugins {
id 'org.jetbrains.kotlin.multiplatform' version "$kotlin_version"
}
group 'org.example'
version '1.0-SNAPSHOT'
repositories {
mavenCentral()
}
kotlin {
jvm {
withJava()
}
sourceSets {
commonMain {
dependencies {
implementation kotlin('stdlib-common')
}
}
commonTest {
dependencies {
implementation kotlin('test-common')
implementation kotlin('test-annotations-common')
}
}
jvmMain {
dependencies {
implementation kotlin('stdlib-jdk8')
}
}
jvmTest {
dependencies {
implementation kotlin('test')
implementation kotlin('test-junit')
implementation 'io.kotlintest:kotlintest-runner-junit5:3.3.2'
implementation "org.jetbrains.kotlin:kotlin-reflect:$kotlin_version"
implementation "org.junit.jupiter:junit-jupiter-engine:5.5.2"
implementation "org.junit.jupiter:junit-jupiter-api:5.5.2"
implementation "org.junit.jupiter:junit-jupiter-params:5.5.2"
}
}
}
}
这是我的测试(位于src / jvmTest / kotlin中):
import org.junit.jupiter.api.Test
class JvmTest {
@Test
fun testX() {
println("Hello World")
println("Hello World")
println("Hello World")
println("Hello World")
println("Hello World")
}
}
我希望Hello World的输出,但是如您所见,没有输出。
执行测试,我必须更改什么?还是执行了该输出,但未显示输出?我该怎么办才能查看测试的输出?
我也尝试过kotlin版本1.3.72。结果相同。
编辑:我将测试更改为
import junit.framework.TestCase.assertTrue
import org.junit.jupiter.api.Test
class JvmTest {
@Test
fun testX() {
assertTrue(false)
}
}
结果相同,构建成功运行,未执行测试。构建/报告/测试中没有文件
答案 0 :(得分:0)
尝试添加
test {
testLogging {
showStandardStreams = true
}
}
答案 1 :(得分:0)
查找[project]/build/reports/tests
,然后查找各种index.html
文件。
此外,要验证测试是否已运行,使测试失败而不是打印语句可能更容易。类似于以下内容。
@Test
fun testX() {
assertTrue(false)
}
我假设您的所有测试均在导入junit时位于jvm源中。我还会在commonTest源代码中尝试一种,以确保所有功能都能按预期工作。
答案 2 :(得分:0)
添加
tasks.jvmTest{
useJUnitPlatform()
}
build.gradle中的问题已解决。
build.gradle现在看起来如下:
buildscript {
ext.kotlin_version = '1.4.0-rc'
}
plugins {
id 'org.jetbrains.kotlin.multiplatform' version "$kotlin_version"
}
group 'org.example'
version '1.0-SNAPSHOT'
repositories {
mavenCentral()
}
kotlin {
jvm {
withJava()
}
sourceSets {
commonMain {
dependencies {
implementation kotlin('stdlib')
implementation kotlin('stdlib-common')
}
}
commonTest {
dependencies {
implementation kotlin('test-common')
implementation kotlin('test-annotations-common')
}
}
jvmMain {
dependencies {
implementation kotlin('stdlib-jdk8')
}
}
jvmTest {
dependencies {
dependsOn commonTest
implementation kotlin('test')
implementation kotlin('test-junit')
implementation 'io.kotlintest:kotlintest-runner-junit5:3.3.2'
implementation "org.jetbrains.kotlin:kotlin-reflect:$kotlin_version"
runtimeOnly "org.junit.jupiter:junit-jupiter-engine:5.5.2"
implementation "org.junit.jupiter:junit-jupiter-api:5.5.2"
implementation "org.junit.jupiter:junit-jupiter-params:5.5.2"
}
}
}
}
tasks.jvmTest{
useJUnitPlatform()
}