2

我们正在从迁移MSTestsNUnit. 第一步是迁移我们使用以下 msbuild 任务完成的所有 UnitTests 项目:

<Target Name="RunTests">

    <!-- The location of the necessary tools to run nunit tests -->
    <PropertyGroup>
        <NUnitToolPath>C:\Program Files\NUnit 2.5.2\bin\net-2.0</NUnitToolPath>
        <NUnitResultTool>C:\Program Files\NUnit For Team Build Version 1.2</NUnitResultTool>
    </PropertyGroup>

    <!-- Create a build step representing running nunit tests -->
    <BuildStep TeamFoundationServerUrl="$(TeamFoundationServerUrl)" BuildUri="$(BuildUri)" Name="NUnitTestStep" Message="Running Nunit Tests">
        <Output TaskParameter="Id" PropertyName="NUnitStepId" />
    </BuildStep>

    <!-- Specify which dll's to include when running tests -->
    <CreateItem Include="$(OutDir)\Profdoc.UnitTests*.dll">
        <Output TaskParameter="Include" ItemName="TestAssembly" />
    </CreateItem>

    <NUnit
        Assemblies="@(TestAssembly)"
        ToolPath="$(NUnitToolPath)"
        OutputXmlFile="$(OutDir)\NUnit_TestResults.xml"
        ContinueOnError="true">
        <Output TaskParameter="ExitCode" PropertyName="NUnitResult" />
    </NUnit>

    <!-- Update the build step result based on the output from the NUnit task -->
    <BuildStep Condition="'$(NUnitResult)'=='0'" TeamFoundationServerUrl="$(TeamFoundationServerUrl)" BuildUri="$(BuildUri)" Id="$(NUnitStepId)" Status="Succeeded" />
    <BuildStep Condition="'$(NUnitResult)'!='0'" TeamFoundationServerUrl="$(TeamFoundationServerUrl)" BuildUri="$(BuildUri)" Id="$(NUnitStepId)" Status="Failed" />

    <!-- Upload the results to TFS. -->
    <Exec Command="&quot;$(NUnitResultTool)\NUnitTFS.exe&quot; -n &quot;$(OutDir)\NUnit_TestResults.xml&quot; -t &quot;$(TeamProject)&quot; -b &quot;$(BuildNumber)&quot; -f &quot;%(ConfigurationToBuild.FlavorToBuild)&quot; -p &quot;%(ConfigurationToBuild.PlatformToBuild)&quot; -x &quot;$(NUnitResultTool)\NUnitToMSTest.xslt&quot;" />

    <!-- Indicate build failure if any tests failed -->
    <Error Condition="'$(NUnitResult)'!='0'" Text="Unit Tests Failed" />
</Target>

但是我不知道如何在没有集成测试的情况下完成相同的任务,因为我们需要在运行测试之前将设置和许可证文件部署到二进制文件夹。那么,我如何将文件部署到二进制文件夹,最好作为 NUnit 任务的一部分(因为我想针对不同的配置设置运行 IntegrationTests)?

4

1 回答 1

3

我建议创建一个新的目标,它将复制所有必需的文件并使目标RunTests依赖于新的,基本上:

<PropertyGroup>
    <LicenseFiles>$(PathToLicenseFiles)\**\*.lcx</LicenseFiles>
    <SettingsFiles>$(PathToConfigFiles)\**\*.config</SettingsFiles>
</PropertyGroup>

<ItemGroup>
   <Files Include="$(LicenseFiles);$(SettingsFiles)"
          Exclude="*.tmp"/>
</ItemGroup>

<Target Name="CopyDependencyFiles">
  <CopyFiles Inputs="@(Files)" Outputs="..." />
</Target>

<!-- Run Integration tests after all files were copied -->
<Target Name="RunIntegrationTests" DependsOnTargets="CopyDependencyFiles">
  <NUnit .. />
</Target>
于 2011-08-16T23:35:23.897 回答