如何调试,为什么 Spring 引导集成测试上下文不在测试之间重用?

How to debug, why Spring Boot integration test context is not reused between tests?

我又遇到了一个棘手的问题。我有两个单独的测试文件重用相同的上下文 class。我希望他们重用相同的上下文,唉 Spring ist 启动了两次,从而延长了构建时间。您对如何找出/调试什么触发上下文重新加载有任何想法吗?

测试 class 看起来像:

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

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

上下文class是

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

祝好,身体健康,

马吕斯·施密特

我终于弄明白了,这个问题不知何故是由使用@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 设置保持不变,与以前相同。可能会有所帮助。

晚安,问好,

马吕斯·施密特