如何测试'脏'弹簧应用程序上下文?

Jav*_*cky 4 testing junit spring

Spring框架文件规定:

在不太可能的情况下,测试可能"弄脏"应用程序上下文,需要重新加载 - 例如,通过更改bean定义或应用程序对象的状态 - Spring的测试支持提供了使测试夹具重新加载配置和重建的机制执行下一个测试之前的应用程序上下文

有人可以详细说明吗?我只是没有得到它.例子很好.

kro*_*ock 8

假设每个JUnit测试方法都是隔离的,即没有任何可能导致另一个测试方法表现不同的副作用.这可以通过修改由spring管理的bean的状态来实现.

例如,假设你有一个由类的spring管理的bean,MySpringBean它有一个值为的字符串属性"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());
    }
}
Run Code Online (Sandbox Code Playgroud)

使用@DirtiesContext注释指示测试方法可能会更改spring托管bean的状态.