2

からに移行しMSTestsていNUnitます。最初のステップは、次の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を新しいものに依存させる新しい1つのターゲットを作成することをお勧めします。

<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 に答える