Запуск многоплатформенного теста Kotlin в IntelliJ выдает ошибку, не указанную в JDK

У меня есть несколько тестов в общем модуле для мультиплатформенного проекта Kotlin. Когда я выполняю эти тесты, используя Gradle, например ./gradlew :android:test, они все проходят и тесты запускаются.

Теперь я столкнулся с более сложной проблемой, когда я хотел бы отладить реальный тест в IntelliJ. К сожалению, при выборе опции отладки в IntelliJ я получаю ошибку, не указанную JDK.

JDK не указан

Я использую следующие зависимости для тестирования:

testImplementation "org.jetbrains.kotlin:kotlin-test-annotations-common:$kotlin_version"
testImplementation "org.jetbrains.kotlin:kotlin-test-common:$kotlin_version"

с $kotlin_version быть 1.2.41.

Общие настройки модуля выглядят так:

Общие настройки модуля

Раздел SDK также правильно распознает JDK:

SDKs

Я попытался изменить Module SDK с Kotlin SDK на java, однако IntelliJ тогда требует, чтобы я потребовал jUnit для выполнения теста, чего я бы предпочел не делать, если это возможно.

Есть ли способ, как заставить отладчик работать в IntelliJ для кода Kotlin?

1 ответ

Решение

Нашел решение.

Так же, как нет смысла выполнять тесты с использованием Gradle только в общем модуле, например ./gradlew :common:test и тесты должны быть выполнены для конкретной платформы ./gradlew :android:testпотому что общий модуль может содержать expectобъявления, которые должны быть реализованы для каждой платформы с использованием actual ключевое слово, также не имеет смысла отлаживать в общем модуле напрямую.

Вместо этого, для таких целей, тест для отладки должен быть помещен в конкретный модуль платформы, для моей цели я выбрал модуль Android, а затем он может быть выполнен и отлажен.

Как я уже говорил, этот подход необходим, потому что в модуле Android expectEd структуры на самом деле заменены actual Реализации.

Другие вопросы по тегам