Определение того, какой код изменился с момента последней сборки, и запуск только уязвимых модульных тестов - это часть того, что серверы Continuous Integration (CI) могут сделать для вас. Джеймс Блэк совершенно прав, что вы хотите запускать соответствующий набор тестов при внесении изменений, а не только один тест или один прибор. Однако у вас может быть проект совместно используемой библиотеки с набором тестов и проект зависимого приложения с собственным набором тестов. Изменения в коде приложения не повлияют на код библиотеки, поэтому вы можете настроить сборку CI для запуска всех тестов, если код библиотеки изменяется, но только тесты приложения, если код приложения изменяется. (Возможно, вы все еще захотите делать ночные сборки.) Это также зависит от вашей ревизии / системы контроля версий; это может быть невозможно в зависимости от комбинации управления источником и программного обеспечения CI.
Мэтью Шарли также прав в том, что зависимости лучше всего обрабатываются средами изоляции / пересмешивания для целей модульных тестов. И NUnit, и MSTest (а также большинство других xUnit платформ) также можно использовать для полных интеграционных тестов (которые используют фактические зависимости, такие как вызов веб-служб).
Для очень предвзятого взгляда на NUnit против MSTest см. MSBuild, NAnt, NUnit, MSTest и разочарование . Строгое сравнение (несколько смещенное в другом направлении) см. Сравнение MSTest и Nunit Frameworks .
С личной точки зрения (чистое мнение) ключевые функции, которые мне нужны, были доступны в NUnit, поэтому я не видел причин для оценки MSTest. Visual Studio Team System имеет очень тесную интеграцию с MSTest (я видел хорошую демонстрацию, которая визуально демонстрирует покрытие кода); если бы моя компания использовала эту (очень дорогую) версию VS, возможно, стоит рассмотреть MSTest. Одним из ключевых вопросов было бы, если бы мы могли заставить его работать с нашим CI-сервером.