Java модульность, проблема компиляции в тестовых классах с использованием плагина java9-модульности для gradle - PullRequest
0 голосов
/ 25 апреля 2020

Я пытаюсь создать приложение Java, используя Java модульную систему с Gradle. Я использую этот плагин: https://github.com/java9-modularity/gradle-modules-plugin в соответствии с рекомендациями Gradle. Java исходники компилируются должным образом и используют информацию модуля. java, как и ожидалось. Однако мой модульный тест больше не работает. Я хочу использовать assertJ, который вызывает проблемы сейчас. Когда я пытаюсь скомпилировать тестовые классы, я получаю эту ошибку:

ошибка: пакет org.assertj.core.api не виден import stati c org.assertj.core.api. Assertions.assertThat; ^ (пакет org.assertj.core.api объявлен в модуле org.assertj.core, но модуль module.test.main не читает его)

Я пытался установить

tasks {
    test {
        extensions.configure(TestModuleOptions::class) {
            runOnClasspath = true
        }
    }
}

но это ничего не меняет.

Я создал временное репозиторий github, чтобы каждый мог воспроизвести проблему: https://github.com/Mariusz-v7/tmp-module-test

Как исправить свое подразделение тесты сейчас?

1 Ответ

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

Как указано в документации к плагину , по умолчанию тестирование выполняется по пути к модулю.

То, что вы изменили, касается выполнения тестов. Однако тестовая компиляция также происходит по пути модуля, поэтому вам необходимо, чтобы тестовые зависимости были должным образом импортированы вашим модулем. Вот что говорит вам ошибка.

В качестве альтернативы, вы можете попробовать встроенную поддержку в предстоящем Gradle 6.4, доступен релиз-кандидат

...