spring framework documentation州:
在不太可能的情况下,测试可能 '脏'应用程序上下文, 需要重新加载 - 例如,通过 更改bean定义或 应用程序对象的状态 - Spring的测试支持提供 导致测试夹具的机制 重新加载配置和 之前重建应用程序上下文 执行下一个测试。
有人可以详细说明吗?我只是没有得到它。例子很好。
答案 0 :(得分:8)
假设每个JUnit测试方法都是隔离的,即没有任何可能导致另一个测试方法表现不同的副作用。这可以通过修改由spring管理的bean的状态来实现。
例如,假设您有一个由类MySpringBean
的spring管理的bean,它具有值为"string"
的字符串属性。以下测试方法testBeanString
将具有不同的结果,具体取决于在方法testModify
之前或之后调用它。
@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration(locations={"/base-context.xml"})
public class SpringTests {
@Autowired
private MySpringBean bean;
@Test public void testModify() {
// dirties the state of a managed bean
bean.setString("newSring");
}
@Test public void testBeanString() {
assertEquals("string", bean.getString());
}
}
使用@DirtiesContext
注释来指示测试方法可能会更改spring托管bean的状态。