And*_*ete 5 java spring spring-test junit5
问:@SpringBootTest如何在 JUnit 5 停止 JVM(调用用 添加的钩子addShutdownHook())之前关闭通过用 注释测试类创建的 Spring Boot 上下文?
示例:
假设有一个像这样的 bean
@Component
public class SomeBean implements DisposableBean {
public SomeBean() {
var hook = new Thread(() -> System.out.println("Shutdown Hook called"));
Runtime.getRuntime().addShutdownHook(hook);
}
@Override
public void destroy() {
System.out.println("Destroy called");
}
}
Run Code Online (Sandbox Code Playgroud)
和一个简单的 Junit 5 测试,如下所示:
@SpringBootTest
class TestJvmShutdownHookApplicationTests {
@Test
void contextLoads() {
}
}
Run Code Online (Sandbox Code Playgroud)
destroy()如何在 JVM 关闭挂钩之前执行调用?
2021-02-18 13:54:24.540 INFO 18928 --- [ main] .a.t.TestJvmShutdownHookApplicationTests : Started TestJvmShutdownHookApplicationTests in 2.378 seconds (JVM running for 3.687)
Shutdown Hook called
2021-02-18 13:54:24.863 INFO 18928 --- [extShutdownHook] o.s.s.concurrent.ThreadPoolTaskExecutor : Shutting down ExecutorService 'applicationTaskExecutor'
Destroy called
Run Code Online (Sandbox Code Playgroud)
后台
it.ozimov:embedded-redis添加了一个 JVM 关闭钩子,并在 bean redisConnectionFactory(Lettuce)被销毁之前关闭 Redis 服务器。
目前没有内置支持来实现这一点。
有关更多详细信息,请参阅Spring 框架的问题跟踪器中的“执行所有测试后关闭 TestContext 框架中的所有 ApplicationContext”问题。
目前,正确关闭Spring TestContext 框架ApplicationContext缓存的唯一方法是通过或调用的自定义@DirtiesContextTestExecutionListenerTestContext#markApplicationContextDirty(...)
| 归档时间: |
|
| 查看次数: |
4385 次 |
| 最近记录: |