2012-04-19 67 views
1

我最近將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中工作,但這不應該是一個問題,我想。

感謝

回答

1

如果你有一個構建服務器,一個好的方法是設置與配置爲您的測試文件夾虛擬路徑的站點。然後在你的公司的任何人都可以瀏覽類似http://build.companydomain.local/yourapp/nunitreports/,託管在構建服務器的IIS(如果你的構建服務器有一個)。

我和我的覆蓋報告這樣做。任何人都可以隨時瀏覽它。我希望它有幫助!

+0

對不起,我沒有注意到你的答案早。我必須承認我不太明白這對我有什麼幫助。我的測試文件夾包含多個測試項目,因此將測試文件夾映射到虛擬路徑並不能解決必須手動收集報告的問題。 – berntie 2013-03-29 12:17:32