DynamoDB Local Maven Plugin

The following text is a partial translation of the original English article, performed by ChatGPT (gpt-3.5-turbo) and this Jekyll plugin:

DynamoDB Local 是 Amazon DynamoDB 服务器的本地运行副本。亚马逊开发了这个工具,并基于 SQLite 进行了开发。它通过 RESTful API 充当真实的 DynamoDB 服务。

我猜,DynamoDB Local 是用于集成测试的,下面是我们将如何使用它。

我使用 Maven 运行所有的 Java 集成测试,使用 maven-failsafe-plugin。 Maven 的集成测试理念是,在 pre-integration-test 阶段启动所有辅助测试 stub,在 integration-test 阶段运行测试,并在 post-integration-test 阶段关闭所有 stub。

如果能以这种方式使用 DynamoDB Local 就太好了。我没有找到任何用于此目的的 Maven 插件,所以我决定自己创建一个 - jcabi-dynamodb-maven-plugin

该插件的完整使用详情在 它的网站 上有解释。但是,这里有一个简单的示例(在 Maven 中央仓库 中获取其最新版本):

上述配置将在运行集成测试之前立即启动DynamoDB本地实例,并在测试完成后立即停止。服务器将在TCP端口10500上监听。虽然示例中使用的是固定端口号,但建议您使用随机分配的端口号。

当DynamoDB本地服务器启动并运行时,我们可以为其创建一个集成测试。

当然,没有任何输出,因为服务器在没有任何表的情况下启动。由于服务器是空的,您应该在每次集成测试之前使用DynamoDB SDK中的createTable()来创建表。

为了避免这种额外的麻烦,在最新版本的jcabi-dynamodb-maven-plugin中的0.6版本中,我们引入了一个新的目标create-tables

上面使用的foo.json文件应该包含一个JSON请求,该请求在DynamoDB Local启动后立即发送。该请求应符合CreateTable请求的规范。例如:

表将在pre-integration-test阶段创建,并在post-integration-test阶段删除。现在,我们可以通过jcabi-dynamo使我们的集成测试更有意义。

上述测试将向表格中添加一个新项目,然后断言该项目是否存在。

插件已经在三个操作系统上进行了测试,并且证明可以正常工作:Mac OS X 10.8.5,Windows 7 SP1和Ubuntu Linux 12.04桌面版。

Translated by ChatGPT gpt-3.5-turbo/42 on 2023-12-27 at 10:47

sixnines availability badge   GitHub stars