【发布时间】:2011-09-28 18:20:25
【问题描述】:
在我正在开发的一个特定的 SOA 风格的应用程序中,我们在每个服务中都有大量的单元测试。每个服务的测试都是串行运行的,我想测试并行运行每个服务的测试。
在我们的 msbuild 文件中如下:
<Target Name="RunUnitTests">
<ItemGroup Condition="'@(UnitTestsOutput)' == ''">
<UnitTestsOutput Include="$(UnitTestsOutputFolder)\**\*Tests.dll" />
</ItemGroup>
<Exec Command="$(NUnitRunner) /nologo /labels /timeout=30000 @(UnitTestsOutput, ' ')" />
</Target>
因此,所有测试项目程序集都以名称“Tests”结尾,因此通过该搜索可以找到/提取它们。 做这样的事情是否可能/可行?
<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 运行构建,它可能会并行化这些测试集吗?
【问题讨论】: