【问题标题】:How to collect NUnit reports with MSBuild?如何使用 MSBuild 收集 NUnit 报告?
【发布时间】:2012-04-19 13:12:47
【问题描述】:

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

谢谢

【问题讨论】:

    标签: visual-studio msbuild nunit


    【解决方案1】:

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

    我正在处理我的报道报告。任何人都可以随时浏览它。希望对你有帮助!

    【讨论】:

    • 对不起,我之前没有注意到你的回答。我必须承认我不太明白这对我有什么帮助。我的 Tests 文件夹包含多个测试项目,因此将 Tests 文件夹映射到虚拟路径并不能解决必须手动收集报告的问题。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-08-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多