У меня есть приложение весенней загрузки и 100
интеграционные тесты там. Мое приложение состоит из следующих тестовых зависимостей:
- junit 4
- junit jupiter 5.3
- spring-kafka-test для встроенного Kafka
- https://mvnrepository.com/artifact/it.ozimov/embedded-redis для встроенного Redis
- https://mvnrepository.com/artifact/io.zonky.test/embedded-database-spring-test для встроенного PostgreSQL
Все тестовые классы наследуются от Base
class:
@RunWith(JUnitPlatform.class)
@ExtendWith(SpringExtension.class)
@FlywayTest
@AutoConfigureEmbeddedDatabase
@SpringBootTest(webEnvironment = SpringBootTest.WebEnvironment.RANDOM_PORT, properties = {"spring.main.allow-bean-definition-overriding=true"})
public abstract class BaseTest {
}
Например, есть такой тестовый класс:
public class Test1 extends BaseTest {
@Test
void test1() throws Exception {
}
}
Мое приложение использует gradle. Итак, у меня есть такое build.gradle
:
buildscript {
ext {
springBootVersion = '2.2.0.M4'
}
repositories {
mavenCentral()
maven {
url "https://plugins.gradle.org/m2/"
}
maven {
url 'https://repo.spring.io/libs-milestone'
}
}
dependencies {
classpath("org.springframework.boot:spring-boot-gradle-plugin:${springBootVersion}")
classpath "gradle.plugin.com.boxfuse.client:gradle-plugin-publishing:5.2.1"
}
}
Я обнаружил, что время выполнения интеграционных тестов резко увеличилось с 2.2.0.M4 до 2.2.0. M5 . Итак, я перебрал несколько весенних загрузочных версий и измерил время выполнения 100 интеграционных тестов. В этих тестах я просто изменяю значение springBootVersion
и перезагружаю конфигурацию Gradle.
- 2.2.0.M3 - 75 секунд
- 2.2.0.M4 - 74 секунды
- 2.2.0.M5 - 113 секунд
- 2.2.0.RC1 - 126 секунд
- 2.2.0.RELEASE - 120 секунд
- 2.2.1.RELEASE - 121 секунда
Обратите внимание, что мойрезультаты теста воспроизводимы. Я имею в виду, что каждый тестовый запуск может иметь разные результаты, но время выполнения меняется на несколько секунд (для каждой версии весенней загрузки).
Я не могу понять, что происходит?
Upd. Я создаю заявку на ошибку - https://github.com/spring-projects/spring-boot/issues/18951