Как запустить интеграционное тестирование на БД через репозитории с LINQ2SQL? - PullRequest
6 голосов
/ 12 августа 2009

Как вы проводите интеграционное тестирование своей базы данных через уровень / модель вашего домена (репозитории), которые используют LINQ 2 SQL в реализации, и оставляете БД такой, какой вы ее нашли? Другими словами, идеальный мир модульного тестирования БД, интеграционный тест оставил бы БД такой, какой она была.

Существуют ли инструменты, которые будут обрабатывать это автоматически? Каковы лучшие практики для выполнения интеграционных тестов на БД через репозитории?

1 Ответ

1 голос
/ 12 августа 2009

Spring Framework обеспечивает поддержку интеграционного тестирования при использовании NUnit . Классы NUnit находятся в сборке Spring.Testing.NUnit.dll. Есть несколько классов , которые выполняют управление транзакциями . Эти классы создают и откатывают транзакцию базы данных для каждого теста . Вы просто пишете код, который может предполагать существование транзакции.

Другое дело, будет ли это работать с Linq to SQL. Спринг говорит, что это работает с ОРМ. SQL Server 2008 позволяет вкладывать транзакции, поэтому теоретически вы можете начать транзакцию, выполнить тест с помощью классов Linq to SQL, а затем откатите вашу транзакцию назад. Но у меня нет
попробовал.

У Райана Гарагвая есть интересная статья об этом, в которой используются TransactionScope и NUnit для отката изменений базы данных (хотя он использует объекты SQLCommand и SQLConnection в своем тестовом коде, а не Linq)

...