Java 为什么我的测试在<;单次执行1秒,但20+;maven构建中的秒数?

Java 为什么我的测试在<;单次执行1秒,但20+;maven构建中的秒数?,java,unit-testing,testing,junit,Java,Unit Testing,Testing,Junit,我正在进行一个项目,其中有几个基于spring boot的集成测试,总共运行约5分钟。在尝试减少此运行时时,我注意到一个非常小且简单的测试需要约20秒。当“单独”运行时,只需不到一秒钟,这是我所期望的 其他测试都是带有注释的integrationtests,如: @RunWith(SpringRunner.class) @SpringBootTest(webEnvironment=SpringBootTest.webEnvironment.MOCK) @MockBean(value=SomeBe

我正在进行一个项目,其中有几个基于spring boot的集成测试,总共运行约5分钟。在尝试减少此运行时时,我注意到一个非常小且简单的测试需要约20秒。当“单独”运行时,只需不到一秒钟,这是我所期望的

其他测试都是带有注释的integrationtests,如:

@RunWith(SpringRunner.class)
@SpringBootTest(webEnvironment=SpringBootTest.webEnvironment.MOCK)
@MockBean(value=SomeBean.class)
@模拟测试
@ContextConfiguration(initializers=someInitializer.class)
但是这个测试没有这样的注释,不需要应用程序上下文,根据我的理解,应该能够顺利、快速地通过。它看起来像这样:

公共类SomeUnitTest{
@试验
public void testObjectOfClass(){
SomeClass SomeClass=新的SomeClass(“1”、“2”、“3”、“4”);
SomeClass.assertThat(SomeClass.hasId)(“1-2-3-4”);
}
}

谁能解释一下为什么测试会这样。即使我不能改变它,我也很想了解到底发生了什么。

我以前见过JUnit runner错误地计时的情况

我有一个测试,它可以自己运行亚秒,但在完整的测试运行中速度很慢。它将在测试之前立即运行,并带有一系列带有插件的设置&@BeforeAll步骤。在深入研究之后,我发现计时器直到设置完成后才切换到下一个测试类

如果其他测试有大量的测试前设置,您可能会看到相同的情况

编辑:
@BeforeAll
的时间安排肯定不好

public class TestA {
    @Test
    public void test() {
    }
}

public class TestB {
    @BeforeAll
    public static void before() throws InterruptedException {
        Thread.sleep(10000);
    }
    @Test
    public void test() {
    }
}

public class TestC {
    @BeforeAll
    public static void before() throws InterruptedException {
        Thread.sleep(10000);
    }
    @Test
    public void test() {
    }
}

我以前见过JUnit runner错误计时的情况

我有一个测试,它可以自己运行亚秒,但在完整的测试运行中速度很慢。它将在测试之前立即运行,并带有一系列带有插件的设置&@BeforeAll步骤。在深入研究之后,我发现计时器直到设置完成后才切换到下一个测试类

如果其他测试有大量的测试前设置,您可能会看到相同的情况

编辑:
@BeforeAll
的时间安排肯定不好

public class TestA {
    @Test
    public void test() {
    }
}

public class TestB {
    @BeforeAll
    public static void before() throws InterruptedException {
        Thread.sleep(10000);
    }
    @Test
    public void test() {
    }
}

public class TestC {
    @BeforeAll
    public static void before() throws InterruptedException {
        Thread.sleep(10000);
    }
    @Test
    public void test() {
    }
}

您忘记在问题中包含测试本身。没有它,任何人都不太可能回答。这很难回答,因为“看起来像这样”可能会隐藏您遇到的实际问题。maven整理自己或执行实际测试期间的时间延迟是什么?您使用哪个maven插件来执行测试?单元测试实际上没有做更多的事情。正在测试的类是带有一些lombok注释的纯java。就这样。很遗憾,我无法显示实际代码。您忘记在问题中包含测试本身。没有它,任何人都不太可能回答。这很难回答,因为“看起来像这样”可能会隐藏您遇到的实际问题。maven整理自己或执行实际测试期间的时间延迟是什么?您使用哪个maven插件来执行测试?单元测试实际上没有做更多的事情。正在测试的类是带有一些lombok注释的纯java。就这样。很遗憾,我无法显示实际的代码。谢谢,这似乎很有道理。以下测试确实有很多@BeforeAll的设置。所以这很可能就是原因。谢谢,这似乎很有道理。以下测试确实有很多@BeforeAll的设置。所以这很可能就是原因。