Spring 干弹簧注释配置测试
因此,我正在进行一些Spring测试,这些测试需要使用注释进行依赖项注入:Spring 干弹簧注释配置测试,spring,testing,spring-test,Spring,Testing,Spring Test,因此,我正在进行一些Spring测试,这些测试需要使用注释进行依赖项注入: @RunWith(SpringJUnit4ClassRunner.class) @ContextConfiguration(loader=AnnotationConfigContextLoader.class) public class BeanTest { @Autowired private SomeService someService; @Configuration static class
@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration(loader=AnnotationConfigContextLoader.class)
public class BeanTest {
@Autowired
private SomeService someService;
@Configuration
static class ContextConfiguration {
@Bean
public SomeService someService() {
return new SomeService();
}
}
}
我真的不想在每次测试中都重复这段代码,但我尝试创建一个包含配置的基类:
@Configuration
class MyContextConfiguration {
@Bean
public SomeService someService() {
return new SomeService();
}
}
并由此得出:
@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration(loader=AnnotationConfigContextLoader.class)
public class BeanTest {
@Autowired
private SomeService someService;
@Configuration
static class ContextConfiguration extends MyContextConfiguration {}
}
好像不管用。有人能建议一种干燥的方法吗
谢谢 您应该可以这样做
@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration
public class BeanTest {
@Autowired
private SomeService someService;
@Configuration
@Import(MyContextConfiguration.class)
static class ContextConfiguration {
....
}
}
另外,您不需要提及
注释configContextLoader
,Spring按惯例将自动拾取用@Configuration
注释的静态内部类,并使用适当的ContextLoader您可以在contextconfiguration注释中声明配置类。从文档中删除
@ContextConfiguration(classes = TestConfig.class)
public class ConfigClassApplicationContextTests {
// class body...
}
上下文配置
定义用于确定如何为集成测试加载和配置ApplicationContext的类级元数据。具体来说,@ContextConfiguration声明将用于加载上下文的应用程序上下文资源位置或带注释的类。
资源位置通常是位于类路径中的XML配置文件;然而,注释类通常是@Configuration类。但是,资源位置也可以引用文件系统中的文件,带注释的类可以是组件类等
文档中的示例
@ContextConfiguration(classes = TestConfig.class)
public class ConfigClassApplicationContextTests {
// class body...
}
看起来@Import注释需要替换内部类和注释。如果您可以删除它,我可以接受这个…不是
MyContextConfiguration
,而是上面示例中的ContextConfiguration
,因为这是导入MyContextConfiguration
,所有这些bean都应该在测试中可见..基本上是任何用@Configuraiton注释的静态类..下面是一篇关于默认值的详细信息的小博客文章-