Пробуем запустить java-приложение на тестах

У меня есть приложение Java SpringBoot, и я хочу запустить интеграционные тесты, поэтому я хочу запускать приложение перед любым тестом. У меня есть bean-компоненты, которые работают, когда я запускаю приложение в обычном режиме, эти beans переопределяют некоторые bean-компоненты по умолчанию, и они работают нормально.

Мои журналы при нормальной работе службы: Overriding bean definition for bean 'myService' with a different definition: replacing [Generic bean: ...] with [Root bean: myBean]

Но когда я пытаюсь запустить свой интеграционный тест, журналы говорят следующее: Skipping bean definition for [where is my bean]: a definition for bean 'myService' already exists. This top-level bean definition is considered as an override.

Вот тест, запускающий приложение:

@RunWith(SpringRunner.class)    
@SpringBootTest(classes = Application.class)
public class Test {

    @Test
    public void contextLoads() {
    }
}

Кто-нибудь знает, как настроить переопределение bean-компонентов по умолчанию в моих тестах?

Спасибо

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

Ответы 1

Вы также можете установить переопределение beans для тестов. Вы можете сделать это, создав отдельный класс конфигурации и определив все компоненты там.

@Configuration
public class TestConfig {

@Bean
public <Bean Class Name> <name of bean>()
{
    return new <Bean Class Name>();
}
}

Затем в тестовом примере вы можете использовать этот класс конфигурации в качестве конфигурации контекста.

@SpringBootTest
@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration(classes = {TestConfig.class})

Таким образом, все bean-компоненты можно инициализировать и использовать для тестовых случаев в отдельном классе.

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