База данных бесплатных тестов NUnit - PullRequest
2 голосов
/ 27 ноября 2009

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

Большое спасибо, ребята.

Ответы [ 4 ]

4 голосов
/ 27 ноября 2009

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

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

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

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

2 голосов
/ 27 ноября 2009

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

1 голос
/ 08 декабря 2009

1:

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

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

2:

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

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

Кроме того, с хорошими схемами доступа к данным, например, «Repository» и «Unit of Work», остальная часть кода может быть сделана на 100% независимой от базы данных. То же самое относится и к другим источникам данных, например, Файлы CSV и XML.

1 голос
/ 08 декабря 2009

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

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

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

...