В этом проекте у меня модульная установка. В нем есть родитель с двумя модулями.
Вот фрагмент родительского pom. xml:
<modules>
<module>moduleA</module>
<module>moduleB</module>
</modules>
Оба модуля имеют информацию о модуле. java. Вот информация о модуле. java для moduleB:
module moduleB {
requires spring.web;
requires static lombok;
requires java.validation;
requires swagger.annotations;
requires slf4j.api;
exports com.example.service
}
Внутри moduleB есть основная папка и тестовая папка, как и в любом обычном проекте java. В папке test есть тест JUnit5, который пытается протестировать службу в том же пакете, но в папке sr c.
Пытаясь это сделать, я получаю следующее сообщение об ошибке:
module moduleB does not "opens com.example.service" to unnamed module @67205a84
Как я понимаю, все зависимости, которые не являются частью модуля, будут упакованы в ' безымянный модуль. В данном случае модуль @ 67205a84. Я ожидаю увидеть в этом модуле такие вещи, как Mockito, который я использую только для тестирования. Пожалуйста, поправьте меня, если я ошибаюсь в этом предположении.
Когда я открываю свой модуль B (добавляя слово «open» перед удалением модуля), тест проходит гладко. Но, очевидно, я не этого хочу.
Итак, мой вопрос действительно таков: могу ли я открыть безымянный модуль, чтобы мои тесты могли работать, но мой модуль остается закрытым для чего-либо, кроме теста?
Вот упрощенный обзор структура каталогов.
- parent
|
-> - pom.xml
- moduleA
- moduleB
|
-> - pom.xml
- src
|
-> - main
|
-> - java
|
-> - module.info
- com.example.service
|
-> - ModuleBService.java
- test
|
-> - java
|
-> - com.example
|
-> - Application.java
- com.example.service
|
-> - ModuleBServiceTest.java
Как оказалось, расположение Application.class имеет значение. Модуль, который я пытаюсь протестировать, не имеет класса, помеченного @SpringbootApplication, потому что это просто библиотека. Чтобы проверить его функциональность, мне нужно запустить тестовое приложение SpringbootApplication. Когда Application. java находится в том же пакете, что и ModuleBServiceTest. java, все в порядке. Когда я перемещаю его в другой пакет, появляется сообщение об ошибке сверху. Почему?