Интеграционные тесты с 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 со многими различными базами данных, по одной для каждого теста.
Или вы можете очистить базу данных между каждым тестом.
С отдельным установленным экземпляром у вас есть затраты на настройку процесса и разборку, которые вы хотели бы минимизировать для своего набора тестов, а следовательно, и преимущества использования встроенной базы данных.