Запуск многоплатформенного теста Kotlin в IntelliJ выдает ошибку, не указанную в JDK
У меня есть несколько тестов в общем модуле для мультиплатформенного проекта Kotlin. Когда я выполняю эти тесты, используя Gradle, например ./gradlew :android:test
, они все проходят и тесты запускаются.
Теперь я столкнулся с более сложной проблемой, когда я хотел бы отладить реальный тест в IntelliJ. К сожалению, при выборе опции отладки в IntelliJ я получаю ошибку, не указанную 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:
Я попытался изменить Module SDK с Kotlin SDK на java, однако IntelliJ тогда требует, чтобы я потребовал jUnit для выполнения теста, чего я бы предпочел не делать, если это возможно.
Есть ли способ, как заставить отладчик работать в IntelliJ для кода Kotlin?
1 ответ
Нашел решение.
Так же, как нет смысла выполнять тесты с использованием Gradle только в общем модуле, например ./gradlew :common:test
и тесты должны быть выполнены для конкретной платформы ./gradlew :android:test
потому что общий модуль может содержать expect
объявления, которые должны быть реализованы для каждой платформы с использованием actual
ключевое слово, также не имеет смысла отлаживать в общем модуле напрямую.
Вместо этого, для таких целей, тест для отладки должен быть помещен в конкретный модуль платформы, для моей цели я выбрал модуль Android, а затем он может быть выполнен и отлажен.
Как я уже говорил, этот подход необходим, потому что в модуле Android expect
Ed структуры на самом деле заменены actual
Реализации.