IntelliJ не обновляет sh автоконфигурации Spring в многомодульных тестах при запуске всех тестов - PullRequest
0 голосов
/ 20 июня 2020

У меня есть многомодульный проект Maven с тремя модулями A, B, C, все они являются модулями Spring-Boot.

  • B - это автоконфигурация класс, использует A. У него есть условие для определенного bean-компонента.
  • C также является классом автоконфигурации, также использует A, у него нет никаких условий, потому что это очень маленький модуль, и если вы поместите его в свой pom, вам нужна автоконфигурация.

При запуске тестов:

  • mvn clean install работает, и все проходит.
  • Когда я запускаю тесты JUnit каждого индивидуального модуля от Intellij все тоже проходит.

Проблема в том, что, когда я пытаюсь запустить все тесты из IntelliJ, модуль A (тот, который ни от чего не зависит) терпит неудачу, поскольку утверждает, что не может найти bean-компонент этого модуля C потребностей! Я даже не могу исключить автоконфигурацию, потому что модуль A не зависит от C, поэтому он не знает класс.

Все, что мне не хватает относительно того, как IntelliJ загружает контекст, когда у вас есть автоконфигурации ?

1 Ответ

0 голосов
/ 27 июня 2020

Отвечая на свой вопрос потомкам. Это частичный ответ, предполагающий, что все ваши модули используют один и тот же root пакет . В моем случае все модули используют a.b.c, где пакет первого модуля - a.b.c.first, второй модуль - a.b.c.second и так далее. Если у вас есть лучшее решение, я с радостью изменю принятый ответ.

Проблема, как и предполагалось, в том, как вы определяете конфигурацию теста. Поскольку это многомодульный проект, и я хочу, чтобы все тесты выполнялись, есть два способа его определения:

Проблемный c способ: Определение шаблона на весь проект. Это решение описано в этом ответе StackOverflow .

running all tests with a pattern

Running this configuration will cause the problems described in the question - unrelated auto-configurations of dependencies the module doesn't have will start to fail and therefore the tests will fail as well.

The way that works: This way works under the said assumption that all modules share the same package. Create a new Run Configuration as follows:

запустить все тесты в общем пакете

  • Тип теста: Все в пакете
  • Пакет: Общий root пакет всех ваших модулей, например a.b.c в примере, который я привел в начале этого ответа.
  • Поиск тестов: Во всем проекте

Это запустит все ваши тесты с правильные автоконфигурации.

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