2009-11-26 2 views
2

Как я могу проверить свой код (TDD) для стандартных операций CRUD без наличия базы данных. Возможно ли достичь такого уровня изоляции, чтобы мой код был независимым от базы данных.База данных бесплатных тестов NUnit

Большое спасибо.

+0

Вы пытаетесь изолировать фактическую базу данных от вашего кода доступа к данным (т.е. ваш код linq to sql из фактических запросов, отправленных в БД)? или вы пытаетесь протестировать код, который использует уровень доступа к данным (т.е. ваши бизнес-правила и службы)? – Jaime

+0

Письмо одно, теперь я расследую после того, как я руководствовался ответом ниже, есть ли у вас какие-либо предложения? спасибо. – eomeroff

ответ

1

Q1:

Как я могу проверить свой код (TDD) для стандартных операций CRUD без наличия базы данных.

Я вижу, что сообщение помечено nunit, поэтому я предполагаю контекст .net. Учитывая это, я лично использовал SQLite как базу данных в памяти в проекте уже несколько месяцев (вместе с NHibernate и обычными DDD-образцами).

Q2:

Можно ли достичь такого уровня изоляции, так что мой код зависит от базы данных.

Я не думаю, что можно писать полностью независимый от базы данных код, но NHibernate принимает меня на 95% пути (но это число сильно зависит от вашего конкретного контекста).

Кроме того, с хорошими шаблонами доступа к данным, например. «Репозиторий» и «Единица работы», остальная часть базы кода может быть сделана на 100% агностике базы данных. То же самое относится к другим источникам данных, например. CSV и XML-файлы.

4

Да. Вы пишете интерфейс со всем вызовом в базу данных, которую хотите.

Затем вы создаете два класса, реализующих интерфейс.

У одного есть реальный доступ к вашей базе данных.

Другой, просто притворяется, это притворная реализация.

+0

спасибо, я смотрю видео об этом прямо сейчас на DnrTv – eomeroff

2

Используйте подделки, такие как Rhino Mocks, чтобы высмеять доступ к данным. Таким образом, когда ваши тесты будут запущены, они будут взаимодействовать с подделкой, а не полностью перейти к базе данных.

1

Вы можете протестировать бизнес-уровень (и некоторый слой презентации) с использованием объектов Mock.

Используйте Mocks/Fakes, чтобы вместо вызова базы данных из DAL вместо этого вызывался поддельный класс и возвращал предопределенное значение.

Для проверки DAL вам понадобится фактическая база данных. Вы можете использовать платформу единичного тестирования для запуска простого CRUD в базе данных. Создайте простую тестовую базу данных, а также точку восстановления и используйте настройку фрейма модуля тестирования &, чтобы убедиться, что ваша база данных находится в ожидаемом состоянии.

+0

кажется, что нет другого пути, кроме загрузки данных тестирования в ожидаемом состоянии. –

Смежные вопросы