Я опишу, что я делаю здесь, но не думаю, что это правильный способ - просто описываю мой опыт:
Я использую NUnit, чтобы написать все свои модульные тесты для моего уровня доступа к данным, используяSQLite DB для "макета" базы данных.Таким образом, все вызовы базы данных реальны, но база данных находится в памяти, поэтому вы все равно можете добиться хорошей производительности при выполнении ваших тестов.Здесь необходимо тщательно протестировать каждый метод доступа к данным.
Моя бизнес-функциональность снова протестирована с использованием NUnit, но с использованием Moq для имитации всех операций доступа к данным.Если вы кэшируете что-либо на своем бизнес-уровне (как я), вы можете внедрить класс In-Memory Cache вместо своего реального, чтобы убедиться, что содержимое правильно помещено в кэш.
Хотя многим нравится делать это для своих контроллеров, я предпочитаю использовать инструмент тестирования внешнего интерфейса, такой как Selenium, чтобы «записывать» мои юнит-тесты и впоследствии преобразовывать их в код.Selenium - отличный инструмент для тестирования реальных функциональных возможностей, а не только отдельного случая в отрыве от остальных.Вы можете использовать соответствующий плагин Firefox, чтобы записать все основные функции в вашей системе и спланировать свои утверждения (например, нажав кнопку A, вы попадете на страницу B, где я смогу увидеть мое сообщение «Спасибо»).Selenium - отличный инструмент для запуска автоматических юнит-тестов внешнего интерфейса.Вы можете конвертировать свои тесты в код C # и запускать их с помощью выбранного инструмента непрерывной интеграции во время ночных сборок (я использую TeamCity и отлично работает), или, в качестве альтернативы, в зависимости от размера вашего приложения, есть несколько веб-приложений, которые принимаютваши сценарии Selen в качестве входных данных и их полуавтоматический запуск.
Просто для пояснения: все эти тесты (доступ к данным, бизнес-уровень, интерфейсные тесты) приятно использовать в качестве тестов NUnit инастроить простой инструмент CI для запуска их каждую ночь.Таким образом, вы узнаете, что что-то сломается в тот момент, когда вы фиксируете какой-то код или каждое утро в офисе.
Извините, это не тот пример, который вы искали, но я подумал, что он может вам помочь.