Junit 每个单元测试类或单例实例化的DynamoDbLocal的多个实例

Junit 每个单元测试类或单例实例化的DynamoDbLocal的多个实例,junit,amazon-dynamodb,guice,dynamo-local,jukito,Junit,Amazon Dynamodb,Guice,Dynamo Local,Jukito,我正在尝试将DynamoDbLocal服务器用于单元测试用例。 提出了两个选择 或者定义一个junit类规则,该规则在类之前启动本地服务器,在类之后停止本地服务器。所以本质上,它将为每个单元测试类启动和停止服务器 public class MyDynamoDbLocalServerRule extends ExternalResource { @Override protected void before() throws Throwable { myInMemoryDynamoDbS

我正在尝试将DynamoDbLocal服务器用于单元测试用例。 提出了两个选择

或者定义一个junit类规则,该规则在类之前启动本地服务器,在类之后停止本地服务器。所以本质上,它将为每个单元测试类启动和停止服务器

public class MyDynamoDbLocalServerRule extends ExternalResource {

@Override
protected void before() throws Throwable {
    myInMemoryDynamoDbServer.start();
}

@Override
protected void after() throws Throwable{
        inMemoryDynamoDbServer.stop();
}

单例实例:

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依赖项注入框架一起使用

我建议使用单例方法,因为为每个测试用例创建数据库实例将是一个耗时的选项。此外,如果您有许多测试用例,那么单元测试可能需要更多的时间来完成。如果您有持续集成,构建和单元测试将花费更多的时间

由于单元测试是以顺序方式运行的,所以不需要为每个测试用例使用单独的实例