Результаты приложения Modularize Spring Boot 2 приводят к неудачным тестам - PullRequest
0 голосов
/ 06 марта 2019

У меня есть более крупное Spring Boot Application (Nr.1), которое состоит из нескольких модулей около 20+ (настройка нескольких модулей).

Внутри этого у меня есть еще одно Spring Boot Application (Nr.2), которое содержит несколько сервисов и т. Д.

app-1
  +...
module-jpa
  +-- pom.xml
  +-- src/main/java/jpa/ (JPA Classes; Entities etc.)
module-repos
  +-- pom.xml
  +-- src/main/java/repos/ JPA Repositories; XYZ extends CrudRepository<..>.
module-app
  +-- pom.xml (dependency on module-jpa and module-repos)
  +-- src
       +-- main
             +-- java
                   +-- xyz
                        +-- application
                                +-- SpringBootApp.java
                   +-- services
                        +-- Service1.java
                        +-- Service2.java
  +-- src
       +-- test
             +-- java
                   +-- services
                        +-- Service1IT.java
                        +-- Service2IT.java
             +-- resources
                   +-- application.properties

В вышеупомянутой совокупности интеграционные тесты работают нормально (Service1IT и Service2IT).

Теперь я реорганизовал module-app в два отдельных модуля module-app и module-app-cli, потому что я хотел повторно использовать module-app.Результат выглядит следующим образом:

module-app
  +-- pom.xml (dependency on module-jpa and module-repos)
  +-- src
       +-- main
             +-- java
                   +-- services
                        +-- Service1.java
                        +-- Service2.java
  +-- src
       +-- test
             +-- java
                   +-- services
                        +-- Service1IT.java
                        +-- Service2IT.java
             +-- resources
                   +-- application.properties
module-app-cli
  +-- pom.xml (dependency on module-jpa, module-repos, module-app)
  +-- src
       +-- main
             +-- java
                   +-- xyz
                        +-- application
                                +-- SpringBootApp.java
             +-- resources
                   +-- application.properties

Но теперь интеграционные тесты для Service1IT.java и т. Д. Больше не работают с такими исключениями:

xyzTest(xyz.abcIT)  Time elapsed: 0.141 s  <<< ERROR!
java.lang.IllegalStateException: Failed to load ApplicationContext
Caused by: org.springframework.beans.factory.UnsatisfiedDependencyException: Error creating bean with name 'firstService': 
Unsatisfied dependency expressed through field 'secondService'; 
nested exception is org.springframework.beans.factory.UnsatisfiedDependencyException: 
Error creating bean with name '.........'repos.ABCRepository' available: expected at least 1 bean which qualifies as autowire candidate. Dependency annotations: {@org.springframework.beans.factory.annotation.Autowired(required=true)}

Что я не понимаюв тот момент, когда простое разделение SpringBootApp на отдельный модуль приводит к сбою интеграционных тестов, которые не связаны с SpringBootApp.java, но на основании результатов, по-видимому, они связаны?Вопрос в том, можно ли это решить?

Полагаю, я упускаю из виду то, что мне не понятно?Есть ли у кого-нибудь предложения, что может вызвать такое поведение?

Некоторые подробности:

Использование Spring Boot версии 2.1.3.RELEASE

Если вам нужнобольше информации, пожалуйста, оставьте комментарий.

Обновление 1

Я просто пытаюсь найти другие способы решения проблемы.Итак, я начал с самого начала и просто удалил основной класс SpringBootApp из module-app, а также удалил вызов spring-boot-maven-plugin в файле pom.xml, и в результате получилось просто:

service1IT(services.Service1IT)  Time elapsed: 0.004 s  <<< ERROR!
java.lang.IllegalStateException: 
Failed to load ApplicationContext
Caused by: org.springframework.beans.factory.BeanCreationException: 
Error creating bean with name 'xyzService': Injection of persistence dependencies failed; nested exception is org.springframework.beans.factory.NoSuchBeanDefinitionException: 
No qualifying bean of type 'javax.persistence.EntityManagerFactory' available 
Caused by: org.springframework.beans.factory.NoSuchBeanDefinitionException: 
No qualifying bean of type 'javax.persistence.EntityManagerFactory' available

1 Ответ

0 голосов
/ 08 марта 2019

Итак, после тщательного анализа я обнаружил, что в тестах не было примечания @EnableAutoConfiguration, которое решало проблему (кроме других), но это было самое важное.

...