我能够使用SpringBoot 1.5.3成功地设置并运行了三个不同的测试配置
方法#1. 使用@Import
注释导入Bean
@RunWith(SpringJUnit4ClassRunner.class)
@Import({MyBean.class})
public class MyBeanTest() {
@Autowired
private MyBean myBean;
}
方法2. 使用@ContextConfiguration
注释导入Bean。
@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration(classes = {MyBean.class})
public class MyBeanTest() {
@Autowired
private MyBean myBean;
}
方法 #3(使用内部类配置;基于官方博客文章)
@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration(loader=AnnotationConfigContextLoader.class)
public class MyBeanTest() {
@Configuration
static class ContextConfiguration {
@Bean
public MyBean myBean() {
return new MyBean();
}
}
@Autowired
private MyBean myBean;
}
考虑到@Import
注释文档
指示要导入的一个或多个{@link Configuration @Configuration}类。
以及MyBean
不是配置类,而是用@Component
注释的bean类,看起来方法1不正确。
来自@ContextConfiguration
文档
{@code @ContextConfiguration}定义了类级别元数据,用于确定如何为集成测试加载和配置{@link org.springframework.context.ApplicationContext ApplicationContext}。
听起来更适用于单元测试,但仍应加载某种配置。
方法1和方法2更短,更简单。 方法3看起来是正确的方法。
我是对的吗?是否有其他标准,为什么我应该使用方法3,例如性能或其他原因?
MyBean
是否依赖于其他的Beans?如果没有,我会像这样实例化它:MyBean myBean = new MyBean();
- Pär Nilssonorg.springframework.core.env.Environment
。 - humkins