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

时间:2010-07-22 06:55:11

标签: spring testing junit

spring framework documentation州:

  

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

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

1 个答案:

答案 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的状态。