如何进行测试';肮脏';spring应用程序上下文?

如何进行测试';肮脏';spring应用程序上下文?,spring,testing,junit,Spring,Testing,Junit,各国: 在不太可能的情况下,测试可能 “脏”应用程序上下文, 需要重新加载-例如,通过 更改bean定义或 应用程序对象的状态- Spring的测试支持提供了 导致测试夹具损坏的机制 要重新加载配置,请执行以下操作: 重新生成之前的应用程序上下文 执行下一个测试 有人能详细说明一下吗?我就是不明白。举个例子就好了。假设每个JUnit测试方法都是孤立的,也就是说没有任何可能导致另一个测试方法表现不同的副作用。这可以通过修改spring管理的bean的状态来实现 例如,假设您有一个由spring类M

各国:

在不太可能的情况下,测试可能 “脏”应用程序上下文, 需要重新加载-例如,通过 更改bean定义或 应用程序对象的状态- Spring的测试支持提供了 导致测试夹具损坏的机制 要重新加载配置,请执行以下操作: 重新生成之前的应用程序上下文 执行下一个测试


有人能详细说明一下吗?我就是不明白。举个例子就好了。

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

例如,假设您有一个由spring类
MySpringBean
管理的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());
    }
}

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

谢谢,我想我现在明白了。您好,您知道有没有办法手动调用dirties上下文?很遗憾,我无法使用注释或扩展类。。