2016-10-11 7 views
2

ユニットテストケースのためにDynamoDbLocalサーバを使用しようとしています。 2つのオプションがあります。各ユニットテストクラスまたはシングルトンインスタンス化のためのDynamoDbLocalの複数のインスタンス

クラスの前にローカルサーバーを起動し、クラスの後に停止するjunitクラスルールを定義します。したがって、本質的に各ユニットテストクラスのサーバを起動および停止します。

public class MyDynamoDbLocalServerRule extends ExternalResource { 

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

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

OR

シングルトンインスタンス

:1あなたがお勧め、あなたがこれを行うためのより良い持っているだろう

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依存性注入フレームワークでそれを使用できるはずです。

答えて

1

シングルトンのアプローチをお勧めします。各テストケースごとにデータベースインスタンスを作成するのは、時間がかかるオプションです。また、多くのテストケースがある場合は、単体テストの完了に時間がかかる可能性があります。継続的な統合があれば、ビルドと単体テストにはもっと時間がかかります。

単体テストが順次実行されるため、テストケースごとに個別のインスタンスは必要ありません。

関連する問題