运行 IntelliJ 中的多平台 Kotlin 测试不产生 JDK 指定错误
Running multi platform Kotlin test in IntelliJ produces No JDK specified error
我在多平台 Kotlin 项目的公共模块中有几个测试。当我使用 gradle 执行这些测试时,例如./gradlew :android:test
,他们都通过了测试 运行。
我现在遇到了一个更复杂的问题,我想在 IntelliJ 中调试实际测试。不幸的是,在 IntelliJ 中选择调试选项后,我收到 No JDK specified 错误。
我正在使用以下依赖项进行测试:
testImplementation "org.jetbrains.kotlin:kotlin-test-annotations-common:$kotlin_version"
testImplementation "org.jetbrains.kotlin:kotlin-test-common:$kotlin_version"
其中 $kotlin_version
为 1.2.41。
常用模块设置如下所示:
SDKs 部分也正确识别 JDKs:
我尝试将模块 SDK 从 Kotlin SDK 更改为 java,但是 IntelliJ 然后希望我需要 jUnit 来执行测试,如果可能的话我不希望这样做。
有没有办法在 IntelliJ 中为 Kotlin 代码制作调试器 运行?
找到解决方案。
就像单独在公共模块中使用 Gradle 执行测试一样没有意义,例如./gradlew :common:test
并且需要针对特定平台 ./gradlew :android:test
执行测试,因为通用模块可能包含 expect
ed 声明,这些声明应该使用 actual
在每个平台上实现关键字,直接在common模块调试也没意义
相反,为了这样的目的,要调试的测试必须放在特定的平台模块中,为了我的目的,我选择了Android模块,然后就可以执行和调试了。
正如我所提到的,这种方法是必要的,因为在 Android 模块中,expect
ed 结构实际上被 actual
实现所取代。
我在多平台 Kotlin 项目的公共模块中有几个测试。当我使用 gradle 执行这些测试时,例如./gradlew :android:test
,他们都通过了测试 运行。
我现在遇到了一个更复杂的问题,我想在 IntelliJ 中调试实际测试。不幸的是,在 IntelliJ 中选择调试选项后,我收到 No JDK specified 错误。
我正在使用以下依赖项进行测试:
testImplementation "org.jetbrains.kotlin:kotlin-test-annotations-common:$kotlin_version"
testImplementation "org.jetbrains.kotlin:kotlin-test-common:$kotlin_version"
其中 $kotlin_version
为 1.2.41。
常用模块设置如下所示:
SDKs 部分也正确识别 JDKs:
我尝试将模块 SDK 从 Kotlin SDK 更改为 java,但是 IntelliJ 然后希望我需要 jUnit 来执行测试,如果可能的话我不希望这样做。
有没有办法在 IntelliJ 中为 Kotlin 代码制作调试器 运行?
找到解决方案。
就像单独在公共模块中使用 Gradle 执行测试一样没有意义,例如./gradlew :common:test
并且需要针对特定平台 ./gradlew :android:test
执行测试,因为通用模块可能包含 expect
ed 声明,这些声明应该使用 actual
在每个平台上实现关键字,直接在common模块调试也没意义
相反,为了这样的目的,要调试的测试必须放在特定的平台模块中,为了我的目的,我选择了Android模块,然后就可以执行和调试了。
正如我所提到的,这种方法是必要的,因为在 Android 模块中,expect
ed 结构实际上被 actual
实现所取代。