所以我试图为我的单元测试运行一个模拟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使用上下文取消绑定监听端口的启动/停止时具有某种挂钩?