KotlinJS 测试不包括常见的 类
KotlinJS tests not including common classes
我有一个编译为 JS 和 JVM 的多平台 kotlin 项目,具有以下构建配置:
普通 - build.gradle
plugins {
id 'kotlin-platform-common' version '1.3.10'
}
repositories {
mavenCentral()
jcenter()
}
dependencies {
compile "org.jetbrains.kotlin:kotlin-stdlib-common:1.3.10"
compile 'org.jetbrains.kotlinx:kotlinx-coroutines-core-common:1.0.1'
testCompile "org.jetbrains.kotlin:kotlin-test-annotations-common"
testCompile "org.jetbrains.kotlin:kotlin-test-common"
}
js - build.gradle
plugins {
id 'kotlin-platform-js' version '1.3.10'
}
repositories {
mavenCentral()
jcenter()
}
dependencies {
expectedBy project(":Lib-common")
compile "org.jetbrains.kotlin:kotlin-stdlib-js:1.3.10"
compile 'org.jetbrains.kotlinx:kotlinx-coroutines-core-js:1.0.1'
testCompile "org.jetbrains.kotlin:kotlin-test"
testCompile "org.jetbrains.kotlin:kotlin-test-js"
}
compileKotlin2Js {
kotlinOptions.outputFile = "${projectDir}/output/lib."
kotlinOptions.moduleKind = "commonjs"
kotlinOptions.metaInfo = false
}
compileTestKotlin2Js {
kotlinOptions.outputFile = "${projectDir}/output/lib_test.js"
kotlinOptions.moduleKind = "commonjs"
kotlinOptions.metaInfo = false
}
jvm - build.gradle
plugins {
id 'kotlin-platform-jvm' version '1.3.10'
}
repositories {
mavenCentral()
jcenter()
}
dependencies {
expectedBy project(":Lib-common")
compile "org.jetbrains.kotlin:kotlin-stdlib-jdk8:1.3.10"
compile 'org.jetbrains.kotlinx:kotlinx-coroutines-core:1.0.1'
compile 'org.apache.httpcomponents:httpcore:4.4.11'
compile 'org.apache.httpcomponents:httpclient:4.5.7'
compile 'org.apache.httpcomponents:httpmime:4.5.7'
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"
我在公共模块中进行了测试,运行在 JVM 上符合预期。 js模块通过compileKotlin2Js
任务成功编译生成js文件,但是我运行compileTestKotlin2Js
common模块中的测试class找不到class 正在测试。这是我尝试 运行 compileTestKotlin2Js
:
时的失败
> Task :Lib-js:classes
e: <location>\Lib\Lib-common\src\test\kotlin\mypackage\ClientTest.kt: (3, 45): Unresolved reference: Client
FAILURE: Build failed with an exception.
* What went wrong:
Execution failed for task ':Lib-js:compileTestKotlin2Js'.
> Compilation error. See log for more details
kotlin-platform-js
gradle 插件不会为 运行 测试创建任务,它只会编译主要和测试源集中的 Kotlin 代码,因此您需要为 JS 设置所有测试基础设施自己一个人。
当所有代码都驻留在应用了 kotlin-mutliplatform
插件的单个模块中时,我建议切换到新的多平台项目创作方法。该插件可以开箱即用地配置 JS 测试任务。
此类项目的 build.gradle 文件如下所示:
plugins {
id 'org.jetbrains.kotlin.multiplatform' version '1.3.50'
}
repositories {
mavenCentral()
}
group 'com.example'
version '0.0.1'
kotlin {
jvm()
js {
nodejs { // target and run tests on node.js
}
}
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')
}
}
jsMain {
dependencies {
implementation kotlin('stdlib-js')
}
}
jsTest {
dependencies {
implementation kotlin('test-js')
}
}
}
}
您可以在此处阅读有关开发多平台项目的更多信息:https://kotlinlang.org/docs/reference/building-mpp-with-gradle.html#building-multiplatform-projects-with-gradle
我有一个编译为 JS 和 JVM 的多平台 kotlin 项目,具有以下构建配置:
普通 - build.gradle
plugins {
id 'kotlin-platform-common' version '1.3.10'
}
repositories {
mavenCentral()
jcenter()
}
dependencies {
compile "org.jetbrains.kotlin:kotlin-stdlib-common:1.3.10"
compile 'org.jetbrains.kotlinx:kotlinx-coroutines-core-common:1.0.1'
testCompile "org.jetbrains.kotlin:kotlin-test-annotations-common"
testCompile "org.jetbrains.kotlin:kotlin-test-common"
}
js - build.gradle
plugins {
id 'kotlin-platform-js' version '1.3.10'
}
repositories {
mavenCentral()
jcenter()
}
dependencies {
expectedBy project(":Lib-common")
compile "org.jetbrains.kotlin:kotlin-stdlib-js:1.3.10"
compile 'org.jetbrains.kotlinx:kotlinx-coroutines-core-js:1.0.1'
testCompile "org.jetbrains.kotlin:kotlin-test"
testCompile "org.jetbrains.kotlin:kotlin-test-js"
}
compileKotlin2Js {
kotlinOptions.outputFile = "${projectDir}/output/lib."
kotlinOptions.moduleKind = "commonjs"
kotlinOptions.metaInfo = false
}
compileTestKotlin2Js {
kotlinOptions.outputFile = "${projectDir}/output/lib_test.js"
kotlinOptions.moduleKind = "commonjs"
kotlinOptions.metaInfo = false
}
jvm - build.gradle
plugins {
id 'kotlin-platform-jvm' version '1.3.10'
}
repositories {
mavenCentral()
jcenter()
}
dependencies {
expectedBy project(":Lib-common")
compile "org.jetbrains.kotlin:kotlin-stdlib-jdk8:1.3.10"
compile 'org.jetbrains.kotlinx:kotlinx-coroutines-core:1.0.1'
compile 'org.apache.httpcomponents:httpcore:4.4.11'
compile 'org.apache.httpcomponents:httpclient:4.5.7'
compile 'org.apache.httpcomponents:httpmime:4.5.7'
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"
我在公共模块中进行了测试,运行在 JVM 上符合预期。 js模块通过compileKotlin2Js
任务成功编译生成js文件,但是我运行compileTestKotlin2Js
common模块中的测试class找不到class 正在测试。这是我尝试 运行 compileTestKotlin2Js
:
> Task :Lib-js:classes
e: <location>\Lib\Lib-common\src\test\kotlin\mypackage\ClientTest.kt: (3, 45): Unresolved reference: Client
FAILURE: Build failed with an exception.
* What went wrong:
Execution failed for task ':Lib-js:compileTestKotlin2Js'.
> Compilation error. See log for more details
kotlin-platform-js
gradle 插件不会为 运行 测试创建任务,它只会编译主要和测试源集中的 Kotlin 代码,因此您需要为 JS 设置所有测试基础设施自己一个人。
当所有代码都驻留在应用了 kotlin-mutliplatform
插件的单个模块中时,我建议切换到新的多平台项目创作方法。该插件可以开箱即用地配置 JS 测试任务。
此类项目的 build.gradle 文件如下所示:
plugins {
id 'org.jetbrains.kotlin.multiplatform' version '1.3.50'
}
repositories {
mavenCentral()
}
group 'com.example'
version '0.0.1'
kotlin {
jvm()
js {
nodejs { // target and run tests on node.js
}
}
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')
}
}
jsMain {
dependencies {
implementation kotlin('stdlib-js')
}
}
jsTest {
dependencies {
implementation kotlin('test-js')
}
}
}
}
您可以在此处阅读有关开发多平台项目的更多信息:https://kotlinlang.org/docs/reference/building-mpp-with-gradle.html#building-multiplatform-projects-with-gradle