[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")
Соответствующие части 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")
}
Код: Выделить всё
dependencies {
implementation(project(":application:core"))
testImplementation(testFixtures(project(":application:core")))
}
Я использую: 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
Мобильная версия