java为什么我的测试在单次执行中运行时间小于1秒,而在maven构建中运行时间大于20秒?
我正在进行一个项目,其中有几个基于spring boot的集成测试,总共运行约5分钟。在尝试减少此运行时时,我注意到一个非常小且简单的测试需要约20秒。当“单独”运行时,只需不到一秒钟,这是我所期望的
其他测试都是带有注释的integrationtests,如:
@RunWith(SpringRunner.class)
@SpringBootTest(webEnvironment = SpringBootTest.WebEnvironment.MOCK)
@MockBean(value = SomeBean.class)
@MockMvcTest
@ContextConfiguration(initializers = someInitializer.class)
但是所讨论的测试没有这样的注释,不需要应用程序上下文,应该按照我的理解顺利快速地通过。它看起来像这样:
public class SomeUnitTest{
@Test
public void testObjectOfClass(){
SomeClass someClass= new SomeClass ("1", "2", "3", "4");
SomeClass.assertThat(someClass).hasId("1-2-3-4");
}
}
谁能解释一下为什么测试会这样。即使我不能改变它,我也很想知道到底发生了什么
# 1 楼答案
我以前见过JUnit runner错误地计时的情况
我有一个测试,它可以自己运行亚秒,但在完整的测试运行中速度很慢。它将在测试之前立即运行,并带有一系列带有插件的设置&@在所有步骤之前。在深入研究之后,我发现计时器直到设置完成后才切换到下一个测试类
如果其他测试有大量的测试前设置,您可能会看到相同的情况
编辑:
@BeforeAll
的时间安排肯定不好