Интеграционные тесты с Embedded Mongo или установленным экземпляром

Приложение, над которым я работаю, - это Velocity/Spring MVC/Mongo на веб-приложении типа Tomcat.

Я могу запустить свои интеграционные тесты на Embedded Mongo, используя EmbedMongo, который занимает больше времени для запуска всех тестов, скажем, около 1 минуты, но в тестовой базе данных на установленном Mongo это занимает около 15 секунд.

Есть ли какая-то польза от использования встроенных баз данных для интеграционных тестов при создании новой базы данных (в данном случае тестовой базы данных в том же экземпляре) - это незначительное усилие? По сути, тесты могут сами создавать БД и необходимую коллекцию.

Кроме использования Embedded Mongo на CI-боксе, где обычная установка не требуется, я не вижу в этом особого преимущества.

Может кто-нибудь поделиться какими-либо идеями, пожалуйста.

Спасибо гаурав

2 ответа

Посмотрите на эту ссылку: /questions/24641104/vstroennyij-mongodb-pri-zapuske-integratsionnyih-testov/24641119#24641119

Вроде бы хорошо, но MongoDB запускается и закрывается между каждым тестом.

Чтобы увеличить скорость, вы можете запустить и отключить один раз для всего набора тестов. Я имею в виду: держать экземпляр MongoDB между тестами.


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

Или вы можете очистить базу данных между каждым тестом.

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

Другие вопросы по тегам