Java SpringRunner和\u之前,每个\u测试\u方法启动应用程序需要额外的时间

Java SpringRunner和\u之前,每个\u测试\u方法启动应用程序需要额外的时间,java,spring,spring-boot,junit,spring-test,Java,Spring,Spring Boot,Junit,Spring Test,创建JUnit测试时: @RunWith(SpringRunner.class) @SpringBootTest @DirtiesContext(classMode = DirtiesContext.ClassMode.BEFORE_EACH_TEST_METHOD) public final class MyIT { @Test public void test() { ... do some tests... } } 并运行测试,它会导致Spri

创建JUnit测试时:

@RunWith(SpringRunner.class)
@SpringBootTest
@DirtiesContext(classMode = DirtiesContext.ClassMode.BEFORE_EACH_TEST_METHOD)
public final class MyIT {

    @Test
    public void test() {
        ... do some tests...
    }

}
并运行测试,它会导致SpringBoot应用程序启动2次,第二次将执行测试。 当我删除
@DirtiesContext(classMode=DirtiesContext.classMode.BEFORE\u EACH\u TEST\u METHOD)
时,它会正确地启动应用程序一次


如何在测试中禁用Spring Boot应用程序的第一次无意义启动?

ClassMode.AFTER\u每个\u TEST\u方法可能都适用于您

您真的需要在类级别上使用它吗?:)我需要每个测试都在独立的环境中运行(而不是重复使用其他测试中的一个),所以我认为是的。我想这会颠倒这两个启动的顺序,但不,你是对的。它现在可以工作了,没有不必要的Spring Boot启动。谢天谢地,我在试图想出一个解决方案来管理Docker容器启动/关闭时遇到了同样的问题,该解决方案是在运行集成测试(更多时间)时以及在每个测试方法都成功后进行的。