春季管理在不同测试上下文中运行的模拟服务器?

时间:2019-09-30 15:41:23

标签: java spring spring-boot sockets spring-mvc

所以我试图为我的单元测试运行一个模拟S3服务器。

我的模拟S3服务器的bean看起来像

@Bean
public AmazonS3 mockServer(){
    var mockServer = new S3Builder()...withPort(8001).build();
    mockServer.start();
    return mockServer;
}

问题是,当Spring测试使用其他上下文时,它会尝试为新上下文创建此bean的新实例,该实例在套接字绑定上失败,因为它先前已在另一个测试上下文中启动了该模拟服务器。 / p>

我已通过使用SocketUtils.findAvailableTcpPort()分配端口来解决此问题。但是,我想知道是否存在一种更优雅的解决方案,以确保在测试上下文之间仅共享此bean的一个实例。

还是在Spring使用上下文取消绑定监听端口的启动/停止时具有某种挂钩?

0 个答案:

没有答案