Intellij не может разрешить классы из тестовых приспособленийJAVA

Программисты JAVA общаются здесь
Ответить
Anonymous
 Intellij не может разрешить классы из тестовых приспособлений

Сообщение Anonymous »

У меня есть проект Gradle с несколькими подмодулями, такими как ядро и адаптер. Я генерирую собственные утверждения Assertj для некоторых классов в ядре. Чтобы использовать эти утверждения в ядре, а также в адаптере, я использую плагин java-test-fixtures. Это отлично работает с gradle. проекты собираются и проходят тесты. Даже при наличии зеленой кнопки воспроизведения в IntelliJ рядом с тестовыми классами и методами тесты работают. Однако сам IntelliJ не может разрешить классы в папке test-fixtures.
[img]https:// i.sstatic.net/YF2sowPx.png[/img]

Статический импорт отмечен красным с символом «Невозможно разрешить утверждения»
Пользовательский метод hasFoo также отмечен красным Невозможно разрешить метод hasFoo в ObjectAssert.

Проблема в том, что я не могу удобно писать подобные тесты, потому что не получаю автозавершение кода. И я никогда не могу быть уверен, что тесты скомпилируются, пока я их не запущу.
Поскольку в gradle все работает, я предполагаю, что я все правильно настроил в gradle, и проблема связана с IntelliJ, который, кажется, игнорировать сгенерированную папку testfixtures при выделении моего кода.
Я хотел бы понять, почему IntelliJ не может разрешить классы, когда gradle, очевидно, может. И конечно как это исправить. В идеале я не хочу менять конфигурацию Gradle для своей IDE (например, плагин идеи), но если нет другого способа, я открыт для этого.
Подробнее
Настройка Gradle

Код: Выделить всё

$ gradle -q projects
Root project 'my-project'
+--- Project ':application'
|    +--- Project ':application:adapter'
|    \--- Project ':application:core'
\--- Project ':bootstrap'

$ cat settings.gradle
rootProject.name = "my-project"
include("bootstrap")
include("application:adapter")
include("application:core")
Я не определил явно подпроект testfixtures, потому что, насколько я могу судить, мне это не нужно.
Соответствующие части build.gradle ядра:

Код: Выделить всё

plugins {
...
id("org.assertj.generator") version "1.1.0"
id("java-test-fixtures")
}

sourceSets {
main {
assertJ {
packages {//package for which to generate asserts
include("de.company.myproject.application.core.domain.tests")
}

//where the asserts are written
outputDir = file("src/testFixtures/java")
}
}
}

//ensure asserts are generated before test fixtures are compiled
tasks.named("compileTestFixturesJava") {
dependsOn(":application:core:generateAssertJ")
}

dependencies {
testFixturesApi("org.assertj:assertj-core:3.25.1")
}
Соответствующие части build.gradle адаптера:

Код: Выделить всё

dependencies {
implementation(project(":application:core"))
testImplementation(testFixtures(project(":application:core")))
}
Конфигурация IntelliJ
Я использую: IntelliJ IDEA 2024.1.5 (Ultimate Edition)
Я заметил эту проблему с самого начала ~ 5 месяцев назад. => Это не связано с последним патчем. Если раньше это работало с intelliJ, то до того, как я это попробовал.
Дерево проекта:
[img]https:// i.sstatic.net/oTwyD5hA.png[/img]
Дерево проекта показывает testFixtures как родственный элемент main и test в ядре. его дочерний Java является корнем тестовых источников.
Я не уверен, как это должно выглядеть, но похоже, что IntelliJ обычно знает об этой папке.
Просматривая настройки модуля, мы видим, что testFixtures распознается как модуль.
Изображение

Это также похоже на зависимость от адаптера.test:
Изображение

Решение попытки:
Предложение IntelliJ: добавить зависимость к модулю
Intellij предлагает Добавить зависимость от модуля «my-project.application.core.test»
code>.
Когда я нажимаю на него, что-то должно произойти, потому что предложение исчезает, а проблема — нет. После того, как я проработал «Восстановление IDE», предложение снова появилось.

Подробнее здесь: https://stackoverflow.com/questions/792 ... t-fixtures
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «JAVA»