我用SpringJUnit4ClassRunner
用于编写集成测试。我也用@DirtiesContext
对于将上下文置于损坏状态的测试,并且效果很好。
但现在我有一个测试,在静态初始化器中设置一个重要的 SystemProperty,该初始化器又在 Spring 上下文中使用。当测试自行执行时,这又可以正常工作。但是,当我与其他测试一起运行测试时,Spring 上下文已经在没有设置该属性的情况下创建,并被我的新测试重用。
如何在测试中强制重新创建 Spring 上下文,然后使用更改后的系统属性?
从 Spring 4.2 开始肮脏的语境 https://docs.spring.io/spring/docs/current/javadoc-api/org/springframework/test/annotation/DirtiesContext.html注释支持以下新阶段:课前 https://docs.spring.io/spring/docs/current/javadoc-api/org/springframework/test/annotation/DirtiesContext.ClassMode.html#BEFORE_CLASS, BEFORE_EACH_TEST_METHOD 之前 https://docs.spring.io/spring/docs/current/javadoc-api/org/springframework/test/annotation/DirtiesContext.ClassMode.html#BEFORE_EACH_TEST_METHOD and 之前_方法 https://docs.spring.io/spring/docs/current/javadoc-api/org/springframework/test/annotation/DirtiesContext.MethodMode.html#BEFORE_METHOD。所以你现在可以这样做:
@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration(...)
@DirtiesContext(classMode = ClassMode.BEFORE_EACH_TEST_METHOD)
public class MyTest {
..
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)