Аннотация @SpringIntegrationTest не загружает контекст, как ожидалось - PullRequest
0 голосов
/ 12 сентября 2018

Обычно, когда я использую @SpringBootTest, я получаю полный контекст bean-компонентов.Я могу @Autowire все виды bean-компонентов, которые доступны после запуска приложения.Теперь в области spring-integration-test libary @SpringIntegrationTest этого не делает.

Как и обещает модуль тестирования, вы можете использовать

@Autowired
private MockIntegrationContext mockIntegrationContext;

Однако, после проверки bean-компонентаВ этом примере я обнаружил, что нет bean!

Пример теста:

@ActiveProfiles("test")
@RunWith(SpringRunner.class)
@SpringIntegrationTest
public class AppTest {

    @Autowired
    private MockIntegrationContext mockIntegrationContext;

    @Test
    public void contextLoads() {
        // put breakpoint to inspect field
        System.out.println(mockIntegrationContext);
    }
}

Когда я, однако, запускаю следующий код, я получаю полный контекст:

@ActiveProfiles("test")
@RunWith(SpringRunner.class)
@SpringBootTest
public class App2Test {

    @Autowired
    private ListableBeanFactory beanFactory;

    @Test
    public void contextLoads() {
        Assert.isTrue(beanFactory.getBeanDefinitionCount() > 0)
    }
}

Почему это так?Как можно добиться аналогичного результата с spring-integration-test?

Материалы для чтения: https://docs.spring.io/spring-integration/docs/current/reference/html/testing.html

1 Ответ

0 голосов
/ 12 сентября 2018

Это независимые аннотации; вам нужны оба.

EDIT

Это прекрасно работает для меня:

@RunWith(SpringRunner.class)
@SpringBootTest
@SpringIntegrationTest
public class So52297757ApplicationTests {

    @Autowired
    private MockIntegrationContext mockIntegrationContext;

    @Autowired
    private String foo;

    @Test
    public void contextLoads() {
        System.out.println(foo);
        System.out.println(mockIntegrationContext);
    }

}

и

@SpringBootApplication
public class So52297757Application {

    public static void main(String[] args) {
        SpringApplication.run(So52297757Application.class, args);
    }

    @Bean
    public String foo() {
        return "foo";
    }

}

и

foo
org.springframework.integration.test.context.MockIntegrationContext@1de5f0ef
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...