我想向使用Gradle's JVM Test Suites的Kotlin项目添加一个集成测试套件,但由于缺少依赖项,它无法编译测试.我需要如何将集成测试指向常规测试的依赖项?
项目 struct (由gradle init
生成,加上我添加的src/intTest
)如下所示:
.
├── app
│ ├── build.gradle.kts
│ └── src
│ ├── intTest
│ │ └── kotlin
│ │ └── SomeTest.kt
│ ├── main
│ │ ├── kotlin
│ │ │ └── mcve
│ │ │ └── App.kt
│ │ └── resources
│ └── test
│ ├── kotlin
│ │ ├── SomeTest.kt
│ │ └── mcve
│ │ └── AppTest.kt
│ └── resources
├── gradle
│ ├── libs.versions.toml
│ └── wrapper
│ ├── gradle-wrapper.jar
│ └── gradle-wrapper.properties
├── gradle.properties
├── gradlew
├── gradlew.bat
└── settings.gradle.kts
app/src/test/kotlin/SomeTest.kt
和app/src/intTest/kotlin/SomeTest.kt
是这个MCVE的同一个文件.
import kotlinx.coroutines.*
import kotlin.test.assertEquals
import kotlin.test.Test
class SomeTest {
@Test
fun someTest() {
assertEquals(1, 1)
}
}
我在app/build.gradle.kts
中添加了新的测试套件:
plugins {
alias(libs.plugins.jvm)
application
}
repositories {
mavenCentral()
}
dependencies {
implementation("org.jetbrains.kotlinx:kotlinx-coroutines-core:1.7.3")
implementation("org.jetbrains.kotlinx:kotlinx-coroutines-android:1.7.3")
}
testing {
suites {
val test by getting(JvmTestSuite::class) {
useKotlinTest("1.9.20")
}
// Added the new test suite here:
val intTest by registering(JvmTestSuite::class) {
dependencies {
implementation(project())
}
}
}
}
java {
toolchain {
languageVersion.set(JavaLanguageVersion.of(21))
}
}
application {
mainClass.set("mcve.AppKt")
}
当我运行./gradlew test
时,它可以工作,但当我运行./gradlew intTest
时,它失败了,因为它既找不到生产依赖项(协 routine ),也找不到测试依赖项(Ktest):
> Task :app:compileIntTestKotlin FAILED
e: file:///Users/robert/mcve/app/src/intTest/kotlin/SomeTest.kt:1:8 Unresolved reference: kotlinx
e: file:///Users/robert/mcve/app/src/intTest/kotlin/SomeTest.kt:1:15 Unresolved reference: test
e: file:///Users/robert/mcve/app/src/intTest/kotlin/SomeTest.kt:2:15 Unresolved reference: test
e: file:///Users/robert/mcve/app/src/intTest/kotlin/SomeTest.kt:5:6 Unresolved reference: Test
e: file:///Users/robert/mcve/app/src/intTest/kotlin/SomeTest.kt:7:9 Unresolved reference: assertEquals
FAILURE: Build failed with an exception.
* What went wrong:
Execution failed for task ':app:compileIntTestKotlin'.
> A failure occurred while executing org.jetbrains.kotlin.compilerRunner.GradleCompilerRunnerWithWorkers$GradleKotlinCompilerWorkAction
> Compilation error. See log for more details
我需要如何配置Gradle 8.5(修订版28aca86a7180baa17117e0e5ba01d8ea9fea598)才能在app/src/intTest
中运行集成测试?