如何使用@RunWith和@ContextConfiguration注解的jUnittesting中访问Spring上下文?
我有以下的testing课
@RunWith(SpringJUnit4ClassRunner.class) @ContextConfiguration(locations = {"/services-test-config.xml"}) public class MySericeTest { @Autowired MyService service; ... }
是否有可能通过编程方式访问services-test-config.xml
中的某个方法? 喜欢:
ApplicationContext ctx = somehowGetContext();
由于testing将像Spring bean那样被实例化,所以你只需要实现ApplicationContextAware接口:
@RunWith(SpringJUnit4ClassRunner.class) @ContextConfiguration(locations = {"/services-test-config.xml"}) public class MySericeTest implements ApplicationContextAware { @Autowired MyService service; ... @Override public void setApplicationContext(ApplicationContext context) throws BeansException { // Do something with the context here } }
这工作也很好:
@Autowired ApplicationContext context;
如果你的testing类扩展了Spring JUnit类
(例如, AbstractTransactionalJUnit4SpringContextTests
或任何其他扩展了AbstractSpringContextTests
类),您可以通过调用getContext()
方法来访问应用程序上下文。
查看包org.springframework.test的javadoc 。