Чтобы сделать это правильно, вам, вероятно, понадобится какой-нибудь сервер непрерывной интеграции, такой как TeamCity или Cruise Control.
Затем вы можете добавить nUnit тесты в ваш скрипт MsBuild, используя следующую команду:
<!--BEGIN RUNNING UNIT TESTS-->
<Choose>
<When Condition=" '$(Configuration)' == 'Release' ">
<ItemGroup>
<TestAssemblies Include="$(BuildDir)\Builds\Release\BusinessLayer.Tests.dll" />
<TestAssemblies Include="$(BuildDir)\Builds\Release\ResourceAccessLayer.Tests.dll" />
</ItemGroup>
</When>
<Otherwise>
<ItemGroup>
<TestAssemblies Include="$(BuildDir)\Builds\Debug\BusinessLayer.Tests.dll" />
<TestAssemblies Include="$(BuildDir)\Builds\Debug\ResourceAccessLayer.Tests.dll" />
</ItemGroup>
</Otherwise>
</Choose>
<UsingTask TaskName="NUnit" AssemblyFile="$(teamcity_dotnet_nunitlauncher_msbuild_task)" />
<Target Name="Test" DependsOnTargets="Build">
<NUnit NUnitVersion="NUnit-2.4.6" Assemblies="@(TestAssemblies)" />
</Target>
<!--RUNNING UNIT TESTS-->
Вы можете добавить условие к цели, что если конфигурация - Выпуск, и задача терпит неудачу, тогда сборка терпит неудачу.
Я думаю, что это должно охватывать пункты 1 и 3
РЕДАКТИРОВАТЬ: Другой способ сделать это - запустить тесты nUnit, используя шаг до / после сборки в Visual Studio, this и this может помочь.
Надеюсь, это поможет