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