我们使用带有junit的弹簧测试(4.x)。是否可以在测试套件运行之前(而不是之后)重置spring-test的上下文缓存。
@DirtiesContext似乎只有在执行后重置上下文的选项。我们想要一种方法来表示spring-test应该使用新的非缓存上下文运行特定的测试套件(这样我们就可以轻松地在我们的测试中覆盖bean定义)。这是@DirtiesContext的扩展还是@RunWithFreshContext这样的新注释并不重要,只要我们能这样做: - )
答案 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
的组件负责人)