В конкретном приложении в стиле SOA, над которым я работаю, у нас есть большое количество модульных тестов в каждом сервисе. Тесты для каждой службы выполняются последовательно, и я хочу протестировать выполнение тестов для каждой службы параллельно.
В нашем файле msbuild есть следующее:
<Target Name="RunUnitTests">
<ItemGroup Condition="'@(UnitTestsOutput)' == ''">
<UnitTestsOutput Include="$(UnitTestsOutputFolder)\**\*Tests.dll" />
</ItemGroup>
<Exec Command="$(NUnitRunner) /nologo /labels /timeout=30000 @(UnitTestsOutput, ' ')" />
</Target>
Таким образом, все сборки проектов тестов заканчиваются именем «Тесты», поэтому они обнаруживаются / подхватываются этим поиском.
Было бы возможно / возможно сделать что-то подобное?
<Target Name="RunUnitTests">
<ItemGroup Condition="'@(UnitTestsOutput)' == ''">
<UnitTestsOutputService1 Include="$(UnitTestsOutputFolder)\*Service1*\*Tests.dll" />
<UnitTestsOutputService2 Include="$(UnitTestsOutputFolder)\*Service2*\*Tests.dll" />
<UnitTestsOutputService3 Include="$(UnitTestsOutputFolder)\*Service3*\*Tests.dll" />
<UnitTestsOutputService4 Include="$(UnitTestsOutputFolder)\*Service4*\*Tests.dll" />
<UnitTestsOutputService5 Include="$(UnitTestsOutputFolder)\*Service5*\*Tests.dll" />
</ItemGroup>
<Exec Command="$(NUnitRunner) /nologo /labels /timeout=30000 @(UnitTestsOutputService1, ' ')" />
<Exec Command="$(NUnitRunner) /nologo /labels /timeout=30000 @(UnitTestsOutputService2, ' ')" />
<Exec Command="$(NUnitRunner) /nologo /labels /timeout=30000 @(UnitTestsOutputService3, ' ')" />
<Exec Command="$(NUnitRunner) /nologo /labels /timeout=30000 @(UnitTestsOutputService4, ' ')" />
<Exec Command="$(NUnitRunner) /nologo /labels /timeout=30000 @(UnitTestsOutputService5, ' ')" />
</Target>
И затем, если сборка выполняется с использованием / maxcpucount, она может распараллелить эти наборы тестов?