在类上使用 @DirtiesContext 注释究竟意味着什么?

Kun*_*pta 3 java junit spring

我一直在使用 Spring,遇到了 spring 提供的 @DirtiesContext 注释。当您想在运行每个方法之前刷新应用程序上下文时(当然以牺牲性能为代价),在每个方法上使用它是有意义的,但是使用@DirtiesContext注释测试究竟意味着什么?一个例子会非常有帮助。

小智 11

您可以使用该属性告诉 Spring junit 运行程序何时删除应用程序上下文classMode

例如,如果您使用以下方式标记一个类:

@DirtiesContext(classMode = ClassMode.AFTER_EACH_TEST_METHOD)
Run Code Online (Sandbox Code Playgroud)

然后应用程序上下文将在每个测试方法之后被清除。您也有更多选择。班级模式的其他选项如下:

  • AFTER_CLASS:关联的ApplicationContext测试类之后将被标记为脏。
  • AFTER_EACH_TEST_METHODApplicationContext :在类中的每个测试方法之后关联的将被标记为脏。
  • BEFORE_CLASS:关联的ApplicationContext测试类之前将被标记为脏。
  • BEFORE_EACH_TEST_METHODApplicationContext :类中每个测试方法之前关联的将被标记为脏。


Rau*_*uth 6

如果您使用@DirtiesContext 注释测试类,它将在测试运行后删除应用程序上下文。这篇文章还有很多解释:DirtiesContext annotation