在msbuild文件中管理多个测试程序集的最佳实践是什么?

时间:2011-04-08 15:16:20

标签: msbuild nunit

我有一个带有几个nunit测试组件的解决方案,还有几个正在开发中。

现在,我正在我的msbuild文件中运行我的nunit命令,如下所示:

    <Exec Command="nunit-console src\Assembly1.Tests\bin\Debug\Assembly1.Tests.Tests.dll src\Assembly2.Tests\bin\Debug\Assembly2.Tests.Tests.dll src\Assembly3.Tests\bin\Debug\Assembly3.Tests.Tests.dll src\Assembly4.Tests\bin\Debug\Assembly4.Tests.Tests.dll" />
显然,这是不可读的,很糟糕。所以问题是我该如何改进呢?具体做法是:

  1. 是否有某种方法可以将测试程序集放在列表中并获得相当于foreach(var assembly in testAssemblies) string.Format("src\\{0}\\bin\\debug\\{1}", assembly)的输出
  2. 我应该在一个nunit-console命令中运行所有测试吗?我猜是的,因为我想在一个输出文件中使用它,并且一个命令返回0或非零(因此如果非零则使构建失败)。

1 个答案:

答案 0 :(得分:2)

认为this question上排名最高的答案符合您的要求。

特别是目标过滤器,它允许您指定所有程序集,但如果有一些您不想运行,还指定名称过滤:

<Target Name="GetTestAssemblies">
<CreateItem
    Include="$(WorkingDir)\unittest\**\bin\$(Configuration)\**\*Test*.dll"
    AdditionalMetadata="TestContainerPrefix=/testcontainer:">
   <Output
       TaskParameter="Include"
       ItemName="TestAssemblies"/>
</CreateItem>