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. Amazon разработал этот инструмент на основе SQLite. Он работает как настоящий сервис DynamoDB через RESTful API.
Предполагаю, что DynamoDB Local предназначен для использования в интеграционном тестировании, и именно так мы собираемся использовать его ниже.
Я использую Maven для запуска всех моих интеграционных тестов на Java с помощью maven-failsafe-plugin
. Философия интеграционного тестирования с использованием Maven заключается в том, что вы запускаете все ваши дополнительные заглушки тестов во время фазы pre-integration-test
, запускаете тесты во время фазы integration-test
и затем выключаете все заглушки во время фазы post-integration-test
.
Было бы замечательно, если бы можно было использовать DynamoDB Local таким образом. Я не нашел никаких плагинов Maven для этой цели, поэтому решил создать свой собственный - jcabi-dynamodb-maven-plugin.
Полные инструкции по использованию плагина объяснены на его веб-сайте. Однако, вот простой пример (получите его последние версии в Maven Central):
Вышеуказанная конфигурация запускает DynamoDB Local прямо перед запуском интеграционных тестов, а затем немедленно останавливает его. Сервер будет слушать TCP-порт 10500. Хотя в примере используется это число, вместо него следует использовать произвольно назначенный порт.
Когда сервер DynamoDB Local работает, мы можем создать интеграционный тест для него.
Конечно, не будет никакого вывода, потому что сервер запускается без каких-либо таблиц. Поскольку сервер пустой, вы должны создать таблицы перед каждым интеграционным тестом, используя createTable()
из DynamoDB SDK.
Чтобы избежать этого типа дополнительной хлопоты, в последней версии 0.6 jcabi-dynamodb-maven-plugin мы ввели новую цель 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 Desktop.
Translated by ChatGPT gpt-3.5-turbo/42 on 2023-12-27 at 10:48