Мне было интересно, какие подходы могут быть у других для тестирования доменных служб на базе данных? У меня уже есть серия ложных репозиториев, которые я могу использовать в доменных службах для тестирования самих доменных служб. Часть построения этих фиктивных репозиториев состоит в том, что они создают примерные агрегаты и связанные сущности и проверяют их на соответствие тем же бизнес-правилам, которые в противном случае использовались бы в модели. Это также обеспечивает удобное и простое средство для обнаружения потенциальных точек воздействия внутри самих сущностей в случае изменения их интерфейсов.
Основная проблема, которую я вижу при живом тестировании моих репозиториев на основе SQL, - это согласованность базы данных. Например, после запуска теста аспекты «создания» уже выполнены. Повторный запуск их, очевидно, вызовет сбои, так как база данных больше не является чистой. Я думал о создании зеркальной базы данных, используемой только для этого типа тестирования. Он будет минимальным, содержит структуру, программируемость, ограничения и т. Д. Я также предоставил бы минимальный набор данных для определенных установленных тестов. Мое мнение заключается в том, что у меня могла бы быть хранимая процедура, которую я мог бы вызвать для сброса базы данных в «исходное» состояние с базовыми данными до начала выполнения теста.
Хотя это не так важно на компьютере разработчика после первоначальной проверки функциональности, я больше смотрю на важность выполнения этих тестов как части ночной сборки; чтобы в случае сбоя теста сборка могла быть отложена, чтобы не загрязнять целевую среду развертывания (особенно в этом случае это будет среда, которую использует группа тестирования).
Я не обязательно думаю, что платформа имеет значение, но если у кого-то есть проблемы, связанные с реализацией, моя среда выглядит следующим образом:
Windows 7 (разработка) / Windows Server 2008 R2 (сервер)
Visual Studio 2008 Team Edition (C #)
Microsoft SQL Server 2008 Standard (Разработка / Сервер)
Я использую Team Build для запуска своих сборок, но это, скорее всего, не является фактором в рамках вопроса.