在IntelliJ中运行多平台Kotlin测试不会产生未指定JDK的错误

时间:2018-06-26 10:56:48

标签: android testing intellij-idea kotlin kotlin-multiplatform

我对多平台Kotlin项目的通用模块进行了几次测试。当我使用gradle执行这些测试时,例如./gradlew :android:test,它们全部通过并运行测试。

我现在遇到了一个更复杂的问题,我想在IntelliJ中调试实际测试。不幸的是,在IntelliJ中选择调试选项后,出现了未指定JDK 错误。

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

常用模块设置如下:

Common module settings

SDKs部分还可以正确识别JDK:

SDKs

我尝试将Module SDK从Kotlin SDK更改为java,但是IntelliJ然后希望我要求jUnit进行测试执行,如果可能的话,我不希望这样做。

有没有办法让调试器在IntelliJ中为Kotlin代码运行?

1 个答案:

答案 0 :(得分:1)

找到了解决方案。

就像单独在通用模块中使用Gradle执行测试没有意义,例如./gradlew :common:test,并且需要针对特定​​平台./gradlew :android:test执行测试,因为公共模块可能包含expect版声明,这些声明应该使用actual在每个平台上实现关键字,直接在通用模块中调试也没有意义。

相反,出于这种目的,必须将要调试的测试放在特定的平台模块中,出于我的目的,我选择了Android模块,然后可以执行和调试它。

正如我所提到的,这种方法是必要的,因为在Android模块中,expect版的结构实际上已由actual实现取代。