如何使用MSBuild收集NUnit报告?

问题描述:

我最近将NUnit引入Visual Studio C#项目。该项目的文件夹结构看起来像如何使用MSBuild收集NUnit报告?

- 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文件执行以下操作:在Visual Studio中以及与CLI的MSBuild生成服务器上构建的解决方案时

<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> 

这工作得很好,无论是。

这种方法的其余不便之处在于,它让我在每个测试项目输出文件夹中的文件夹TestResults测试报告,但什么也没有在我的解决方案的主要输出文件夹。所以,我的问题是:

什么是收集溶液中的/启动项目的输出文件夹中生成的HTML的NUnit报告的首选方法是什么?我应该在哪个.csproj文件中放置什么MSBuild指令?我刚刚开始使用MSBuild,并且我无法弄清楚最佳实践...

它必须在Visual Studio和MSBuild CLI中工作,但这不应该是一个问题,我想。

感谢

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

我和我的覆盖报告这样做。任何人都可以随时浏览它。我希望它有帮助!

+0

对不起,我没有注意到你的答案早。我必须承认我不太明白这对我有什么帮助。我的测试文件夹包含多个测试项目,因此将测试文件夹映射到虚拟路径并不能解决必须手动收集报告的问题。 – berntie 2013-03-29 12:17:32