最近、NUnit を Visual Studio C# プロジェクトに導入しました。プロジェクトのフォルダ構造は次のようになります
- project root
-- applications (rich client interface, web interface, small tools)
-- components (business logic)
-- vendor (3rd party components)
-- tests (Nunit tests)
アプリケーションまたはコンポーネントの下の各 Visual Studio プロジェクト "MyProject" には、"MyProject.Test" という名前のテストの下に対応するプロジェクトがあります。NUnit テストを導入したとき、各 .Test.csproj ファイルに以下を入れました。
<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 を使用してビルド サーバー上でソリューションをビルドする場合の両方で正常に機能します。
このアプローチの残りの不便さは、各テスト プロジェクトの出力フォルダーの TestResults フォルダーにテスト レポートが残り、ソリューションのメイン出力フォルダーには何も残らないことです。だから、私の質問は:
結果のNUnit htmlレポートをソリューションの/スタートアッププロジェクトの出力フォルダーに収集する好ましい方法は何ですか? どの .csproj ファイルにどの MSBuild 命令を配置する必要がありますか? MSBuild を使い始めたばかりで、ベスト プラクティスがわかりません...
Visual Studio と MSBuild CLI の両方で動作する必要がありますが、問題にはならないと思います。
ありがとう