私は最近、Visual StudioのC#プロジェクトにNUnitを導入しました。プロジェクトのフォルダ構造は、「MyProject.Test」という名前のテストの下で対応するプロジェクトがあるアプリケーションやコンポーネントの下で各Visual Studioのプロジェクト「MyProjectと」についてMSBuildでNUnitレポートを収集するには?
- project root
-- applications (rich client interface, web interface, small tools)
-- components (business logic)
-- vendor (3rd party components)
-- tests (Nunit tests)
のように見えます。
<Target Name="AfterBuild">
<CreateItem Include="$(TargetPath)">
<Output TaskParameter="Include" ItemName="MyProjectTests" />
</CreateItem>
<!-- Create folder for test results -->
<MakeDir Directories="$(OutDir)\TestResults" />
<!-- Run tests-->
<NUnit Assemblies="@(MyProjectTests)" ToolPath="..\vendor\NUnit\bin" OutputXmlFile=".\TestResults\MyProject.Test.Results.xml" WorkingDirectory="$(OutDir)" />
<!-- Create HTML report -->
<Xslt Inputs="$(OutDir)\TestResults\MyProject.Test.Results.xml" Xsl="$(MSBuildCommunityTasksPath)\NUnitReport.xsl" RootTag="Root" Output="$(OutDir)\TestResults\MyProject.Test.Results.html" />
</Target>
これは正常に動作し、両方のVisual Studio内からだけでなく、MSBuildのCLIでのビルドサーバー上でソリューションを構築する際:私はNUnitのテストを導入したとき、私は、各.Test.csprojファイルに次のように置きます。
このアプローチの残っている不都合な点は、テストレポートを各テストプロジェクト出力フォルダのTestResultsフォルダに残しておきますが、ソリューションのメイン出力フォルダには何も表示されません。だから、私の質問は:
結果のNUnitのhtmlレポートをソリューションの/スタートアッププロジェクトの出力フォルダに集めるのが好ましい方法は何ですか?どのMSBuild命令を.csprojファイルに置く必要がありますか?私はMSBuildを使い始めたばかりです。ベストプラクティスを理解することはできません。
Visual StudioとMSBuild CLIの両方で動作する必要がありますが、それは問題ではありません。あなたがビルドサーバーを使用している場合
おかげ
申し訳ありませんが、私はあなたの答えを以前気づいていません。私はこれがどのように私を助けてくれるのかよく分かりません。 My Testsフォルダには複数のテストプロジェクトが含まれているため、Testsフォルダを仮想パスにマッピングすると、手動でレポートを収集する必要はありません。 – berntie