Я пытаюсь использовать сервер DynamoDbLocal для модульных тестов. И придумал два варианта:Несколько экземпляров DynamoDbLocal для каждого модульного тестового класса или однострочного экземпляра
Определить правило класса junit, которое запускает локальный сервер перед классом и останавливает его после класса. Таким образом, он начнет и остановит сервер для каждого модульного тестового класса.
public class MyDynamoDbLocalServerRule extends ExternalResource {
@Override
protected void before() throws Throwable {
myInMemoryDynamoDbServer.start();
}
@Override
protected void after() throws Throwable{
inMemoryDynamoDbServer.stop();
}
ИЛИ
Singleton экземпляра:
public static DynamoDBProxyServerContainer createInstance(final int portToListenIn) {
if (dynamoLocal == null) {
synchronized (DynamoDBProxyServerContainer.class) {
if (dynamoLocal == null) {
dynamoLocal = new DynamoDBProxyServerContainer(portToListenIn);
}
}
}
return dynamoLocal;
}
private DynamoDBProxyServerContainer(final int portToListenIn) {
this.startServer(portToListenIn);
getRuntime().addShutdownHook(new Thread(() -> stopServer()));
}
Какой бы вы рекомендовать и у вас лучше это сделать? Обратите внимание, что я должен иметь возможность использовать его с рамкой внедрения зависимостей Guice.