如何调试,为什么 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 设置保持不变,与以前相同。可能会有所帮助。
晚安,问好,
马吕斯·施密特
我又遇到了一个棘手的问题。我有两个单独的测试文件重用相同的上下文 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 设置保持不变,与以前相同。可能会有所帮助。
晚安,问好,
马吕斯·施密特