Наша команда имеет сотни интеграционных тестов, которые попадают в базу данных и проверяют результаты. У меня есть два базовых класса для всех тестов интеграции, один для тестов только для получения и один для тестов на создание/обновление/удаление. Базовый класс только для восстановления восстанавливает базу данных во время TestFixtureSetup, поэтому он выполняется только один раз на тестовый класс. Базовый класс CUD восстанавливает базу данных перед каждым тестом. Каждый класс репозитория имеет свой собственный тестовый класс.
Как вы можете себе представить, все это занимает довольно много времени (приближается 7-8 минут, чтобы бегать и быстро расти). Выполнение этого запуска как части нашего CI (CruiseControl.Net) не является проблемой, но запуск локально занимает много времени и на самом деле запрещает их выполнение перед выполнением кода.
Мой вопрос: есть ли какие-либо рекомендации по ускорению выполнения этих типов интеграционных тестов?
Я не могу выполнить их в памяти (a la sqlite), потому что мы используем некоторые функциональные возможности базы данных (вычисляемые столбцы и т.д.), которые не поддерживаются в sqlite.
Кроме того, вся команда должна быть в состоянии выполнить их, поэтому запускать их в локальном экземпляре SQL Server Express или что-то может быть подвержено ошибкам, если строки подключения не являются одинаковыми для этих экземпляров.
Как вы это делаете в своем магазине и что хорошо работает?
Спасибо!