使用@RunWith(SpringJUnit4ClassRunner.class),您可以访问ApplicationContext对象吗?

时间:2013-02-11 23:15:14

标签: java spring unit-testing junit integration-testing

我有一个Spring测试使用:

@RunWith(SpringJUnit4ClassRunner.class)

与旧的测试方法不同,从Spring测试基类扩展,似乎没有明显的方法来访问Spring使用@ContextConfiguration

加载的ApplicationContext

如何从我的测试方法中访问ApplicationContext对象?

谢谢!

3 个答案:

答案 0 :(得分:13)

来自Spring文档的Integration Testing部分

  

@Autowired ApplicationContext

     

作为实现ApplicationContextAware接口的替代方法,您可以通过字段或setter方法上的@Autowired注释为测试类注入应用程序上下文。例如:

@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration
public class MyTest {

  @Autowired
  private ApplicationContext applicationContext;

  // class body...
}

答案 1 :(得分:3)

添加ApplicationContext的@Autowired属性

@Autowired ApplicationContext applicationContext;

答案 2 :(得分:3)

我用这个:

@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration("classpath:applicationContext.xml")
@TransactionConfiguration(transactionManager = "transactionManager", defaultRollback = false)
@FixMethodOrder(MethodSorters.NAME_ASCENDING)
public class MyClassTest
{
}

并转到项目构建路径-> Source ->添加applicationContext.xml

的位置

我使用maven,因此applicationContext.xml位于src/main/resources

之下

如果使用此方法,则可以使用多个applicationContext进行测试 例如:

@ContextConfiguration("classpath:applicationContext_Test.xml")

@ContextConfiguration("classpath:applicationContext_V01.xml")