2014-01-08 1 views
6

Я разрабатываю проект, который использует Spring Data и MongoDB для управления уровнем сохранения. Я столкнулся с необходимостью заполнения некоторых коллекций MongoDB данными, которые должны выполнять мои интеграционные и модульные тесты. В настоящее время я использую TestNG (и тест Spring) для тестирования.Есть ли альтернатива DbUnit, которая работает с MongoDB?

Есть ли такой инструмент, как DbUnit, который работает с MongoDB?

В принципе, я хочу, чтобы такой инструмент мог читать документы из XML-файла и записывать такие документы в коллекцию MongoDB.

Или я пропустил что-то очевидное, как наилучшую практику для такого рода потребностей?

ответ

3

EmbedMongo - отличный инструмент для этого. И он интегрируется с Maven.

EmbedMongo позволяет легко установить встроенный экземпляр MongoDB для тестирования. После завершения тестов он имеет встроенную поддержку очистки.

См. Этот учебник. http://blog.yohanliyanage.com/2012/11/integration-testing-mongodb-spring-data/

+4

Пожалуйста, добавьте цитату/пример из этой ссылки на этот ответ, так как эта страница может исчезнуть. – Beryllium

+0

Я попробую это и дам вам знать. –

+0

Пока это лучшая альтернатива –

0

Вы всегда можете использовать mongodump/mongoimport/mongorestore, если не возражаете. Или вы можете использовать файл json-документов и использовать com.mongod.util.JSON # parse() или jackson, чтобы прочитать json in в DBObjects и записать их в mongo.

+0

Спасибо за ваш ответ. Мне нужен инструмент, который можно интегрировать с maven, если это возможно. –

0

В одном из моих проектов (в котором была доступна весна) я закончил использование ApplicationListener, который слушает ContextRefreshedEvent.

Вот example: этот подход может быть использован в начале каждого сеанса интеграции или, если он немного изменен, даже перед каждым тестом интеграции. К сожалению, он не интегрируется с Maven и предполагает, что Spring находится под капотом.

1

Вот простой, но немного сырой Util, который может установить дб государство описано в JSON: https://github.com/kirilldev/mongomery

Чтобы загрузить состояние базы данных вам нужно написать только две строки кода:

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

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

mongoDBTester.assertDBStateEquals("expectedTestData.json"); 

Существует два способа записи JSon файлы с ожидаемыми данными:

Строгий матч. Это обычный json-файл, представляющий состояние db. В большинстве случаев вам не нужно более точного описания состояния db после теста.

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

{"Фильмы": [{"_id": "$ anyObject () "," name ":" Titanic "," year ": 1997}]}

json above говорит, что тест ожидает, что один документ в коллекции« Фильмы »будет иметь название Titanic и год 1997. Также он должен иметь не пустое поле _id с любым объектом в нем.

+0

ОК, я исправил ее. –

+0

Спасибо. Может быть приятно, если он получит полировку –

Смежные вопросы