Почему время выполнения интеграционных тестов резко возросло в Spring Boot 2.2? - PullRequest
0 голосов
/ 08 ноября 2019

У меня есть приложение весенней загрузки и 100 интеграционные тесты там. Мое приложение состоит из следующих тестовых зависимостей:

  1. junit 4
  2. junit jupiter 5.3
  3. spring-kafka-test для встроенного Kafka
  4. https://mvnrepository.com/artifact/it.ozimov/embedded-redis для встроенного Redis
  5. 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

...