测试如何“脏”? Spring应用程序上下文?

发布于 2024-09-10 14:05:35 字数 365 浏览 4 评论 0原文

Spring 框架文档状态:

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

有人可以详细说明一下吗?我只是不明白。例子会很好。

The spring framework documentation states:

In the unlikely case that a test may
'dirty' the application context,
requiring reloading - for example, by
changing a bean definition or the
state of an application object -
Spring's testing support provides
mechanisms to cause the test fixture
to reload the configurations and
rebuild the application context before
executing the next test.

Can someone elaborate this? I am just not getting it. Examples would be nice.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

浅紫色的梦幻 2024-09-17 14:05:35

每个 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的状态。

Each JUnit test method is assumed to be isolated, that is does not have any side effects that could cause another test method to behave differently. This can be achieved by modifying the state of beans that are managed by spring.

For example, say you have a bean managed by spring of class MySpringBean which has a string property with a value of "string". The following test method testBeanString will have a different result depending if it is called before or after the method 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());
    }
}

use the @DirtiesContext annotation to indicate that the test method may change the state of spring managed beans.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文