Я работаю над проектом ASP.NET MVC с около 400 юнит-тестами. Я использую Ninject для внедрения зависимостей и MBUnit для тестирования.
Ninject на самом деле не нужен для модульного тестирования, но он уменьшает количество кода, который я должен напечатать. Мне нужно только указать один раз (для каждого проекта), как должны создаваться мои интерфейсы, а не делать это каждый раз, когда я инициализирую тестируемый класс.
Чтобы сэкономить время на написании новых тестов, я создал базовые классы тестовых приборов с как можно большим количеством общего кода установки. Процедуры настройки в этих классах инициализируют фальшивые репозитории, создают некоторые тестовые данные и фальшивую личность для тестового пользователя. Модульные тесты только инициализируют данные, которые слишком специфичны для использования в общих процедурах настройки.
Я также высмеиваю объекты (в отличие от фальсификации) в некоторых тестах, но я обнаружил, что фальсификация хранилищ данных приводит к меньшему количеству работы и более точным тестам.
Например, было бы сложнее проверить, правильно ли фиксирует тестируемый метод все обновления в репозитории после их создания при использовании макета репозитория, чем когда я использую фальшивый репозиторий.
Сначала было довольно много работы, но это помогло мне сэкономить много времени в долгосрочной перспективе.