Я нашел два возможных подхода: DynamoDBEmbedded и Localstack .Что касается последнего, как отказано в заявлении на веб-сайте:
LocalStack предоставляет простую в использовании среду для тестирования / моделирования для разработки облачных приложений.Он раскручивает тестовую среду на вашем локальном компьютере, которая предоставляет те же функциональные возможности и API, что и настоящая облачная среда AWS.
Он моделирует несколько сервисов AWS, включая DynamodB.Пример:
1) В моем pom.xml под зависимостями:
<dependency>
<groupId>cloud.localstack</groupId>
<artifactId>localstack-utils</artifactId>
<version>0.1.19</version>
<scope>test</scope>
</dependency>
2) Добавьте эти заголовки в свой класс юнит-теста:
@RunWith(LocalstackDockerTestRunner.class)
@LocalstackDockerProperties(randomizePorts = true, services = {"dynamodb"})
3) Makeубедитесь, что ваше приложение указывает на url localstack, например, Dynamo будет ждать вас на http://localhost:4569
.Больше информации здесь .
Что касается первого, то есть DynamoDBEmbedded , мы можем сделать следующее:
1) В pom.xmlпод зависимостями:
<dependency>
<groupId>com.amazonaws</groupId>
<artifactId>DynamoDBLocal</artifactId>
<version>1.11.477</version>
<scope>test</scope>
</dependency>
2) Затем в нашем модульном тесте:
private AmazonDynamoDB amazonDynamoDB;
@Before
public void setup() throws Exception {
amazonDynamoDB = DynamoDBEmbedded.create().amazonDynamoDB();//dynamoDB.getAmazonDynamoDB();
amazonDynamoDB.createTable(new CreateTableRequest()
.withTableName(TABLE_NAME)
.withKeySchema(new KeySchemaElement().withAttributeName(ITEM).withKeyType(KeyType.HASH))
.withAttributeDefinitions(
new AttributeDefinition().withAttributeName(ITEM).withAttributeType(ScalarAttributeType.S))
.withProvisionedThroughput(new ProvisionedThroughput(10L, 15L))
);
}
И убедитесь, что наши DAO используют этот amazonDynamoDB
экземпляр.