Как добавить модуль maven с @SpringBootApplication в другой модуль maven в качестве зависимости в области тестирования

У меня есть многомодульный проект, в котором только корневой модуль имеет класс с @SpringBootApplication. Другие модули добавляются в файл POM корневого модуля в качестве зависимостей. Чтобы протестировать другие модули, я создал модуль (назовем его тестовым модулем) с аннотированным классом @SpringBootApplication и другими тестовыми классами для запуска контекста Spring в тестах модулей. Я добавил тестовый модуль в качестве зависимости от других модулей, но контекст Spring не запускается, когда я запускаю тесты с maven. Как правильно добавить?

структура проекта:

---> root (this module starts spring context)
|
|--- moduleA
|
|--- moduleB

Я хочу протестировать модуль A и модуль B, поэтому я создал тестовый модуль с необходимыми зависимостями и классом с аннотацией @SpringBootApplication.

|--- test-module (module with @SpringBootApplication)
|
|---> moduleA (test-module as dependency in test scope)
|
|---> moduleB (test-module as dependency in test scope)

Не могли бы вы предоставить свой pom.xml всех модулей (A, B и родительский)?

P.Sanjay 24.12.2020 14:12
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
В компьютерном программировании биты играют важнейшую роль в представлении и манипулировании данными на двоичном уровне. Побитовые операции...
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Приходилось ли вам сталкиваться с требованиями, в которых вас могли попросить поднять тревогу или выдать ошибку, когда метод Java занимает больше...
Полный курс Java для разработчиков веб-сайтов и приложений
Полный курс Java для разработчиков веб-сайтов и приложений
Получите сертификат Java Web и Application Developer, используя наш курс.
3
1
385
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Если в вашем модуле нет @SpringBootApplication, вы должны использовать @ContextConfiguration вместо @SpringBootTest в тестовом коде junit.

Во-первых, вы определяете класс в /src/test, который может называться «TestConfig», используя @Configuration и @ComponentScan, импортируя bean-компоненты, которые вы хотите протестировать.

Во-вторых, вы используете @ContextConfiguration(classes = {TestConfig.class}) в заголовке теста junit.

Ниже приведен пример кода:

TestConfig.java

@Configuration
@ComponentScan(basePackages = {"com.xxx"}) // base package of module or what package you want to import. you can write more ones if there are more than one package.
public class TestConfig {
}

Юнит тест

@RunWith(SpringRunner.class)
@ContextConfiguration(classes = {TestConfig.class})
public class TestServiceA {

    @Autowired
    public ServiceA serviceA;

//...
}

Другие вопросы по теме