我最近将 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 中工作,但我想这应该不是问题。
谢谢