Spring управляет фиктивным сервером, работающим в разных тестовых контекстах? - PullRequest
0 голосов
/ 30 сентября 2019

Итак, я пытаюсь запустить фиктивный сервер S3 для своих модульных тестов.

Мой компонент для фиктивного сервера S3 выглядит примерно так:

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

Проблема в том, что когда Springтесты используют другой контекст, он пытается создать новый экземпляр этого bean-компонента для нового контекста, который завершается неудачно при привязке сокета, поскольку ранее он запускал этот фиктивный сервер в другом тестовом контексте.

Я решил этовыдайте номер, назначив порт с помощью SocketUtils.findAvailableTcpPort(). Однако я хотел бы знать, есть ли более элегантное решение, чтобы каким-то образом убедиться, что только один экземпляр этого бина является общим для тестовых контекстов.

Или иметь какой-то перехват, когда Spring запускается / останавливается, используя контекст для отсоединения прослушивающего порта?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...