我有非Web应用程序的以下配置bean
@Configuration
public class MyBeans {
@Bean
@Scope(value="prototype")
MyObject myObject() {
return new MyObjectImpl();
}
}
另一方面,我有我的班级
public class MyCommand implements Command {
@Autowired
private MyObject myObject;
[...]
}
如何在不使用XML的情况下使用MyBeans中的配置自动运行myCommand,以便我可以在其他测试类中注入模拟?
提前多多感谢。
答案 0 :(得分:1)
使用基于XML的配置,您将使用ContextConfiguration批注。但是,ContextConfiguration批注似乎不适用于Java Config。这意味着您必须在测试初始化中重新配置应用程序上下文。
假设JUnit4:
@RunWith(SpringJUnit4ClassRunner.class)
public class MyTest{
private ApplicationContext applicationContext;
@Before
public void init(){
this.applicationContext =
new AnnotationConfigApplicationContext(MyBeans.class);
//not necessary if MyBeans defines a bean for MyCommand
//necessary if you need MyCommand - must be annotated @Component
this.applicationContext.scan("package.where.mycommand.is.located");
this.applicationContext.refresh();
//get any beans you need for your tests here
//and set them to private fields
}
@Test
public void fooTest(){
assertTrue(true);
}
}