IntelliJ отображает сообщение об ошибке при написании модульного теста в Kotlin - PullRequest
0 голосов
/ 20 апреля 2020

Контекст

У меня есть проект со следующими чертами

  • IntelliJ Ultimate 2020.1
  • Java 13 (с информацией о модуле. java)
  • Kotlin 1.3.72
  • JUnit (+ истина)
  • maven (я считаю, что это неважно)

База кода смешанные, некоторые классы написаны с использованием простого Java, другие с Kotlin, то же самое верно для тестов. Все работает как положено, то есть

  • весь код скомпилирован в правильном порядке и полностью совместим между Kotlin и Java
  • весь тест может быть выполнен с использованием либо mvn test или IntelliJ «Run Test»
  • полученный файл может быть запущен (для обеспечения контекста)

, но ...

кроме того, что все работает, IntelliJ предупреждает о необъявленной зависимости модуля , только если тестовый класс записан в Kotlin. Это предупреждение не отображается для тестовых классов, написанных простым Java.

Предупреждение: Ошибка: (9, 6) Символ объявлен в модуль 'org.junit.jupiter.api', от которого текущий модуль не зависит

Это предупреждение обычно позволяет импортировать / запрашивать соответствующий модуль / зависимость, но в * 1048 не предлагается решение * dialog.

То, что я до сих пор пробовал:

  • Обновление с JUnit 4 до 5 не изменило ситуацию
  • Поиск в Google безрезультатно: (
  • проверка того, что тесты, записанные в Kotlin, действительно выполняются при запуске mvn test, если тест не пройден
  • запуск теста вручную с использованием IntelliJ «Выполнить тест»
  • преобразование тестов назад и вперед из / в Kotlin
  • , явно требующих JUnit API / true в module-info

Последнее явно предотвращает предупреждение, но нет решения, поскольку это на самом деле производит жесткую зависимость. Во время поиска в Google, плагин maven-surefire гарантирует, что тестовые зависимости включены. Кроме того: выполнение mvn test работает как шарм, как указано выше, так что это, похоже, не является частью проблемы.

Видеть все красные линии при написании теста действительно раздражает ...

enter image description here подозрительное поведение

enter image description here тот же тест, но в java - все в порядке

Вопрос:

Как я могу исправить это предупреждение для Kotlin Тестовых классов в IntelliJ?

Примечание

  1. Я пришел к выводу, что это ошибка в IntelliJ, но я Буду рад, если мне покажут то, что я упустил.

  2. Поскольку все, от компиляции до работы с Maven, работает как шарм, я исключил детали, касающиеся структуры проекта и так далее. Проблема заключается в предупреждении в IntelliJ, а не о сломанной сборке или нефункциональных банках. Я с удовольствием добавлю их, если они окажутся необходимыми.

  3. также, так как все действительно работает (кроме раздражающего предупреждения), я действительно не знаю, где продолжить исследование и, следовательно, создал вопрос.

1 Ответ

1 голос
/ 22 апреля 2020

Это ошибка в IDEA Kotlin Подсветка ошибок плагина: https://youtrack.jetbrains.com/issue/KT-26037

Обходной путь : добавьте @file:Suppress("JAVA_MODULE_DOES_NOT_DEPEND_ON_MODULE") в тестовый файл перед пакетом декларация.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...