gpt4 book ai didi

Spring 我应该在每个类(class)上使用@DirtiesContext

转载 作者:IT老高 更新时间:2023-10-28 13:52:37 24 4
gpt4 key购买 nike

我有几个junit测试,

@ContextConfiguration(locations = { "file:../business/src/test/resources/application-context-test.xml",
"file:src/main/webapp/WEB-INF/confA.xml", "classpath:/mvc-dispatcher-servlet-test.xml"})
@WebAppConfiguration
@RunWith(SpringJUnit4ClassRunner.class)
public class ProductContentControllerTest {
...
}

在一个类中,所有测试都必须在相同的上下文中运行(就是这种情况)。

但我希望我的所有测试类都是独立的。我以为这是默认行为,但是当我一起运行所有测试时,它似乎运行得太快了。

它是如何工作的?每个测试类的应用程序上下文是否只启动一次?

我应该添加:@DirtiesContext(classMode= ClassMode.AFTER_CLASS)

在每个测试类上?

谢谢

最佳答案

Spring 在运行测试时默认缓存应用程序上下文。 Spring 用于缓存的键由以下内容组成:

  • 位置(来自@ContextConfiguration)
  • 类(来自@ContextConfiguration)
  • contextInitializerClasses(来自@ContextConfiguration)
  • contextLoader(来自@ContextConfiguration)
  • activeProfiles(来自@ActiveProfiles)
  • resourceBasePath(来自@WebAppConfiguration)

缓存的所有细节都可以在 documentation 中找到。 .

根据我的经验,很少需要使用 @DirtiesContext 来强制 Spring 重新创建上下文。我没有遇到太多需要它的情况 - 唯一容易想到的是使用共享缓存管理器。

你最好只在你绝对需要它的测试中使用它。如果您在每次测试中都使用 @DirtiesContext 并且您不会得到任何返回,那么执行速度将会太慢。

关于 Spring 我应该在每个类(class)上使用@DirtiesContext,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25360963/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com