Настроить и использовать макетный сервер mongodb для модульного тестирования - PullRequest
28 голосов
/ 02 мая 2011

Мне нужно разработать некоторые тесты Junit для кода Java с использованием хранилища MongoDB. Существует ли какая-либо инфраструктура / библиотека, которая позволяет мне инициализировать фиктивный сервер MongoDB в памяти?

(Идея состоит в том, чтобы тестировать только сам код, то есть на любом компьютере независимо от того, установлен ли и работает MongoDB).

Заранее спасибо!

Ответы [ 5 ]

10 голосов
/ 22 августа 2012

Фонго может быть то, что вы ищете.

4 голосов
/ 20 февраля 2013

Я написал поддельную реализацию MongoDB на Java: mongo-java-server (см. этот ответ ).

3 голосов
/ 24 июня 2011

На самом деле мы работаем над такой тестовой системой, и это вполне осуществимо.В нашем подходе наша тестовая среда расширяет стандартный класс тестового примера (в нашем случае JUnit, но TestNG кажется более способным), который устанавливает и разбирает различные зависимости базы данных при каждом тесте, используя следующие шаги:

Установка комплекта тестов

1) Запустить процесс mongod (мы используем ProcessBuilder, сохранить экземпляр процесса)

Настройка теста:

2) Запустить mongo с файлом теста .js для получения исходных данныхstate

Test

3) Выполнить тест

Test Teardown

4) Удалить базу данных

Test Suite Teardown

5) Остановите процесс Mongod (process.destroy ())

Поскольку запуск и остановка Mongod - единственная вещь, занимающая много времени, я настоятельно рекомендую делать это как можно меньше.Желательно один раз для всего набора тестов.Наш материал еще не закончен, но первые результаты положительные.Я не думаю, что есть много альтернатив.На момент написания этой статьи библиотека mongo mock недоступна, и у mongod нет режима встроенной памяти / встроенного режима.

1 голос
/ 04 мая 2011

Не совсем, вы должны делать такие вещи самостоятельно на своих прикладных уровнях. Если вы используете Morphia, вы можете использовать любую фальшивую инфраструктуру с вашими сервисными слоями, которые вам нравятся (поскольку объекты - это просто POJO), но на уровне db / driver нет ничего, что могло бы вам помочь.

Многие люди просто используют местного разработчика. Экземпляр mongodb с набором тестовых данных, так как он очень быстрый. Я знаю людей, которые загружают тестовые данные для каждого теста, например, копирование базы данных с поддельными / тестовыми данными.

0 голосов
/ 04 мая 2011

В качестве части настройки тестового устройства удалите базу данных и заполните ее любыми тестовыми данными по умолчанию.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...