2

私は一連の NUnit XML 結果ファイルを持っています (Xunit.Runner.MSBuild.xunit msbuild タスクへの NUnitXml パラメーターを介して xUnit.NET によって生成されます) 。テスト スイート?およびhttp://jonnekats.wordpress.com/2009/05/07/integrate-xunit-tests-into-your-daily-team-build/ )

このスクリプトは、各テストの実行を個別に発行しますが、毎回すべての TestResults アーティファクトを取得するので時間がかかります。したがって、[/publish パラメーターを指定して mstest.exe を使用して TFS に] 送信する前に、まずクライアント側でそれらを 1 つの統合セットに結合したいと考えています。

xUnit.net には、次のように xunit.tests.msbuild で呼び出される CombineXunitXml タスクがあります。

<CombineXunitXml InputFiles="@(TestXmlFiles)" OutputFile="TestResults.xml" />

同様の方法でNUnit結果ファイルをマージする同等のタスクを知っている人はいますか? (これは、NUnit タスクが Assemblies パラメーターで複数のアセンブリを受け取るのに対し、xUnit.net には単一の Assembly パラメーターがあるため、一般的には発生しないと思います)。

4

2 に答える 2

2

CombineXunitXml タスクは、xUnit 1.1 には存在しません。1.5 のソース (現在は CTP2) から 1.1 のソリューションにクラスをコピーすると、問題なくビルドされました。

于 2009-07-30T20:03:36.617 に答える
1

私が試したときに、Davy Brionのビルドタスクを機能させることができませんでした(Atanas Korchevの回答のリンク)。

そこで、オープンソースの代替品を書きました:

https://github.com/15below/NUnitMerger

readme から:

MSBuild での使用

タスクをロードします。

<Project xmlns="http://schemas.microsoft.com/developer/msbuild/2003"
             ToolsVersion="4.0"
             DefaultTargets="Build">
  <UsingTask AssemblyFile="$(MSBuildProjectDirectory)\..\Tools\MSBuild\15below.NUnitMerger.dll" TaskName="FifteenBelow.NUnitMerger.MSBuild.NUnitMergeTask" />
  ...

ターゲットでファイルの配列をフィードします。

  <Target Name="UnitTest" DependsOnTargets="OtherThings">
    ... Generate the individual files here in $(TestResultsDir) ...

    <ItemGroup>
      <ResultsFiles Include="$(TestResultsDir)\*.xml" />
    </ItemGroup> 

    <NUnitMergeTask FilesToBeMerged="@(ResultsFiles)" OutputPath="$(MSBuildProjectDirectory)\TestResult.xml" />
  </Target>

結合された結果を OutputPath で見つけます。

F# での使用

F# コンソール アプリを作成し、15below.NUnitMerger.dll、System.Xml、および System.Xml.Linq を参照として追加します。

open FifteenBelow.NUnitMerger.Core
open System.IO
open System.Xml.Linq

// All my files are in one directory
WriteMergedNunitResults (@"..\testdir", "*.xml", "myMergedResults.xml")

// I want files from all over the place
let myFiles = ... some filenames as a Seq

myFiles
|> Seq.map (fun fileName -> XDocument.Parse(File.ReadAllText(fileName)))
|> FoldDocs
|> CreateMerged
|> fun x -> File.WriteAllText("myOtherMergedResults.xml", x.ToString())
于 2012-06-26T08:30:12.917 に答える