是否可以在测试套件运行之前(而不是之后)重置Spring-Test上下文缓存

时间:2014-11-14 13:36:08

标签: spring-test

我们使用带有junit的弹簧测试(4.x)。是否可以在测试套件运行之前(而不是之后)重置spring-test的上下文缓存

@DirtiesContext似乎只有在执行后重置上下文的选项。我们想要一种方法来表示spring-test应该使用新的非缓存上下文运行特定的测试套件(这样我们就可以轻松地在我们的测试中覆盖bean定义)。这是@DirtiesContext的扩展还是@RunWithFreshContext这样的新注释并不重要,只要我们能这样做: - )

1 个答案:

答案 0 :(得分:1)

<强>更新

从Spring Framework 4.2开始,可以使用@DirtiesContext在测试类或测试方法之前关闭测试ApplicationContext。有关详细信息,请参阅JIRA问题SPR-12429


不,从Spring Framework 4.1.2开始,在执行测试方法或测试之前,目前无法让Spring TestContext Framework从缓存中删除ApplicationContext类。

但是,您可以开发自己的自定义TestExecutionListener来为您执行此操作。例如,您可以根据需要扩展DirtiesContextTestExecutionListener并在dirtyContext(...)beforeTestClass(...)方法中执行其beforeTestMethod(...)方法。当然,如果您将自定义TestExecutionListener与DirtiesContextTestExecutionListener一起包含在内,则您不希望自定义侦听器从afterTestMethod(...)执行afterTestClass(...)DirtiesContextTestExecutionListener的相同操作。因此,您可以选择使用no-ops覆盖这两种方法,也可以选择放弃DirtiesContextTestExecutionListener声明您的自定义扩展程序。

此致

Sam(spring-test的组件负责人)