Интеграционные тесты с MongoDB? - PullRequest
5 голосов
/ 05 октября 2010

Мне нужно сделать несколько интеграционных тестов для базы данных Mongo с использованием Java, и я искал решение, подобное DbUnit (DbUnit для Hibernate), которое может заполнять мою базу данных пользовательскими данными и сбрасывать состояние после каждого запуска.

Любые советы?

Спасибо

Ответы [ 5 ]

3 голосов
/ 05 октября 2010

Для начала, я не знаю ни одного прямого эквивалента DBUnit для Mongo.Mongo по-прежнему является новым продуктом, поэтому вам, вероятно, придется «свернуть свой» для некоторых из этих вещей.

Однако есть несколько функций Mongo, которые должны упростить эту задачу:

  1. Работает с минимальными разрешениями
  2. Может просто "запускаться" на подготовленных файлах
  3. У него нет схемы (кроме индексов)
  4. Этоможет работать с данными JSON

Основываясь на вашем наборе данных, существует множество способов сделать это.Но основные инструменты есть.

  • Вы должны иметь возможность запускать версию специально для своего теста, из своего теста.
  • Вы должны иметь возможность импортировать данные "состояния" из файла JSON.
  • Вы должны иметь возможность применять любые серверные функции из файла JS (с нуля).

Так что все должно быть довольно просто.Хотя вам придется написать большую часть кода клея.

2 голосов
/ 05 октября 2010

Вот что я делаю: подключаюсь к известному (часто общедоступному) экземпляру mongo, но создаю новую уникальную базу данных для каждого запуска теста, используя UUID.Вам не нужно беспокоиться о создании коллекций, поскольку они создаются лениво при первом хранении в них документов.Создайте любые нужные вам индексы в конструкторе хранилища или DAO;Создание индекса Монго завершается успешно, не выполняя никакой работы, если индекс уже существует.Очевидно, вам не нужно беспокоиться о переносе схем; -)

Эта схема требует, чтобы вы запускались из пустого хранилища данных, но это известное состояние, поэтому его достаточно легко заполнить на этапе установкиваши тесты, если это необходимо.

Когда тест будет завершен, удалите всю базу данных на этапе демонтажа.

0 голосов
/ 06 марта 2016

Вы можете использовать nosql-unit с модулем MongoDB

0 голосов
/ 14 октября 2015

Я знаю, что этот вопрос старый, но, возможно, мой ответ будет кому-то полезен. Вот простая утилита, которую я написал недавно: https://github.com/kirilldev/mongomery

Очень просто заполнить базу данных данными из файла json:

//db here is a com.mongodb.DB instance
MongoDBTester mongoDBTester = new MongoDBTester(db);
mongoDBTester.setDBState("predefinedTestData.json");

Чтобы проверить состояние БД:

mongoDBTester.assertDBStateEquals("expectedTestData.json");

Он поддерживает заполнители для ожидаемых файлов, которые могут быть полезны в некоторых ситуациях.

0 голосов
/ 05 января 2013

На этот вопрос здесь дан ответ, и он позволяет запускать и останавливать экземпляр между каждым тестом: https://stackoverflow.com/a/9830861/82609

Но запуск / остановка между каждым тестом, кажется, замедляет интеграционные тесты, и поэтому вам лучшезапустить / остановить его для всего набора тестов: https://stackoverflow.com/a/14171993/82609

...