Является ли модульное тестирование вашего SQL слишком сложным? - PullRequest
24 голосов
/ 08 апреля 2009

На www.sqlservercentral.com есть статья о модульном тестировании вашего SQL.

Парень из TDD сказал мне хорошо, мы можем протестировать базу данных.

Системный архитектор во мне сказал, какую логику мы тестируем? В базе данных не должно быть никакой логики, единственное, что вы должны делать в базе данных, это выбирать, обновлять или вставлять.

Так что, если вы чувствуете необходимость модульного тестирования вашего SQL, вы просто очень тщательны, чрезмерно прагматичны или это признак запаха дизайна?

Ответы [ 12 ]

0 голосов
/ 11 апреля 2014

DbFit - хороший инструмент для модульного тестирования базы данных. Я думаю, что лучше использовать TDD с SQL, потому что, в конце концов, это декларативный язык с условным ветвлением, агрегатными функциями и так далее. Без тестов, как вы можете быть уверены, что получаете ожидаемый результат?

0 голосов
/ 08 апреля 2009

Пока предложение WHERE не пустое, оно должно быть проверено.

Здесь мы используем API-интерфейс NHibernate Criteria для запроса базы данных. Тем не менее, мы поставили простые модульные тесты для защиты уровня доступа к данным. Учтите это:

public IList<Book> GetBorrowedBooks(User user);

Это может выглядеть глупо в первую очередь. Но для такой простой ситуации мы имеем дело как минимум с 3 модельными объектами: Book, User, Borrow и, возможно, Return. Любая попытка изменить любой из 3 (или более) классов может привести к сбою кода.

Какова стоимость? Думаю, написание тестов в этом примере займет не более 20 минут. С помощью Category в NUnit модульные тесты доступа к данным могут быть настроены для запуска ночью, в то время как другие тесты запускаются при каждой фиксации. Медленные юнит-тесты доступа к данным не наносят вреда и спасают жизнь.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...