2016-12-05 15 views
0

Мне нужно, чтобы mongoDB запускался автоматически, когда выполняются мои тесты JUnit, а затем останавливается, когда тесты завершены. Я пытался использовать плагин maven mongoDB, но mongoDB не работает. Любая помощь?Проблемы с запуском MongoDB при запуске тестов JUnit

+2

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

+0

@TimothyTruckle, если вы говорите об издевательстве над гонщиком монго, пожалуйста, не делайте этого. Вот статья о том, почему вы не должны этого делать. Https://jaxenter.com/testing-the-database-layer-119366.html – tddmonkey

+0

Аргументы статей действительны при проверке поведения * в базе данных *. Когда вы (* unit- *) проверяете бизнес-логику вне базы данных, вам действительно нужно высмеять доступ к базе данных. –

ответ

0

Вы можете использовать embed.mongo для этого: https://github.com/flapdoodle-oss/de.flapdoodle.embed.mongo

Это в основном начинается встроенный Монго дб в текущем JVM.

Вы можете начать его с помощью предложения и остановить его после этого, и все будет очищено.

Spring Загрузочный имеют автонастройки встроенные поэтому вам нужна только добавить зависимость к embed.mongo: http://docs.spring.io/spring-boot/docs/current-SNAPSHOT/reference/htmlsingle/#boot-features-mongo-embedded

В противном случае вы можете использовать документацию на Github, чтобы создать свое собственное встроенное Монго дб.

0

Если вы всего лишь модульное тестирование, вам следует попытаться объединить интеграцию с базой данных. Однако мне приходилось иметь дело с этим в одно время и требовалось проверить интеграцию между проектом Mongo/Java. Монгольский плагин тоже не работал на меня. Вот два варианта, которые я пробовал, и, возможно, они помогут:

Вариант 1 (с докером): В моем стеке сборки и развертывания (Maven, Jenkins, Docker) самое легкое для меня, чтобы сделать запустите контейнер Mongo в качестве этапа предварительной сборки, запустите сборку с настроенными настройками среды интеграции и завершите работу контейнера в качестве этапа пост-сборки. Кроме того, если у вас есть конкретные данные, необходимые для тестирования, вы можете создать контейнер с этими данными.

Вариант 2 (только Maven/Mongo): в фазе жизненного цикла Maven's pre-integration-tests позвоните в операционную систему, используя Maven exec plugin, чтобы запустить Mongo. Запустите ваши тесты и убедитесь, что те, которые требуют Mongo, запускаются во время фазы integration-test. Затем закройте Mongo в фазе post-integration-test. В зависимости от ваших тестов это может быть сложно, если они изменяют состояние вашего экземпляра Mongo. Если это проблема, вы можете написать несколько сценариев для повторной инициализации/уничтожения Mongo и вызвать эти сценарии в упомянутых выше фазах.

Maven lifecycle reference