spring-integration - @SpringIntegrationTest 注解未按预期加载上下文
问题描述
通常,当我使用时,@SpringBootTest
我会得到 bean 的完整上下文。我可以@Autowire
获取应用程序启动后可用的各种 bean。现在,在库的范围内spring-integration-test
,@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
解决方案
它们是独立的注释;你需要两者。
编辑
这对我来说很好:
@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
推荐阅读
- ruby-on-rails - 如何在我的规范中批准 PayPal 付款?
- vba - 如何根据 word 中带有宏的前导字符更改标题样式?
- android - ALTBEACON 库 - 后台模式?
- c++ - 如何设置参数以使用 QProcess 运行类文件?
- c - C - 读取文件时的无限循环
- react-native - 在 React Native 中卸载应用程序时,我可以捕获事件吗?
- php - 除了@yahoo 帐户之外,所有发件人都收到了 PHP 联系表格
- asp.net - URLEncode 在浏览器 MVC 中不起作用
- php - 尝试更新重复列的行时的 MySQL PHP 语法
- tfs - 您可以将迭代映射到 TFS 板上的列吗?