如何使用@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 。