Как отладить, почему контекст тестирования интеграции Spring Boot не используется повторно между тестами? - PullRequest
1 голос
/ 13 апреля 2020

У меня есть еще один хитрый вопрос для толпы. Я получил два отдельных тестовых файла, повторно использующих один и тот же класс Context. Я ожидаю, что они будут использовать один и тот же контекст, увы Spring запускается два раза, что продлевает время сборки. У вас есть идеи, как выяснить / отладить, что вызывает перезагрузку контекста?

Тестовые классы выглядят так:

@SpringBootTest(
  classes = [HttpProxyTestContext::class]
)
@AutoConfigureWireMock(port = 8082)
internal class AuthOpenidConnectSpringIT {
...
}

и

@SpringBootTest(
  classes = [HttpProxyTestContext::class]
)
@AutoConfigureWireMock(port = 8082)
internal class AuthOidcWebClientIT {
...
}

Класс контекста:

@JooqTest
@ComponentScan(basePackages = ["de.denktmit.someproject.springconfig"])
class HttpProxyTestContext {}

С уважением, будьте здоровы,

Мариус Шммидт

1 Ответ

0 голосов
/ 13 апреля 2020

Мне наконец удалось выяснить, что проблема как-то возникла из-за использования @AutoConfigureWireMock (port = 8082). Я узнал об этом, экспериментируя с использованными аннотациями. Наконец, я немного скорректировал настройки теста и, наконец, мой контекст снова используется. Вот как я это сделал, вот только мой тестовый конфиг:

@SpringBootConfiguration
@ComponentScan(basePackages = ["de.denktmit.someproject.springconfig"])
@AutoConfigureJooq
class HttpProxyTestContext {

  @Bean(destroyMethod = "stop")
  fun wiremock(): WireMockServer {
    val wireMockServer = WireMockServer(wireMockConfig().port(8082))
    wireMockServer.start()
    WireMock.configureFor("localhost", 8082);
    return wireMockServer
  }

}

И меня просто подняли так же просто, как

@SpringBootTest
internal class AuthOpenidConnectSpringIT {
  ...
}

@SpringBootTest
internal class AuthOidcWebClientIT {
   ...
}

Настройка Wiremock @BeforeEach осталась нетронутой и такой же, как перед. Пусть это будет полезно.

Спокойной ночи и наилучшие пожелания,

Мариус Шмидт

...