如何使用MSBuild收集NUnit报告?

时间:2012-04-19 13:12:47

标签: visual-studio msbuild nunit

我最近将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文件夹中留下了测试报告,但在我的解决方案的主输出文件夹中没有任何内容。所以,我的问题是:

在解决方案的/ startup项目的输出文件夹中收集生成的NUnit html报告的首选方法是什么?我应该在哪个.csproj文件中放置哪些MSBuild指令?我刚刚开始使用MSBuild,我无法找到最佳实践......

它必须在Visual Studio和MSBuild CLI中都可以工作,但我认为这应该不是问题。

由于

1 个答案:

答案 0 :(得分:1)

如果您有构建服务器,一种好方法是设置一个具有配置到您的测试文件夹的虚拟路径的站点。然后,公司中的任何人都可以浏览托管在构建服务器的IIS上的http://build.companydomain.local/yourapp/nunitreports/之类的东西(如果您的构建服务器有一个)。

我正在使用我的报道报告。任何人都可以随时浏览它。我希望它有所帮助!