2009-06-29 5 views
3

build automation of running xUnit.net tests with MSBuildの一部として、アイテムのバッチをループする必要がある場合があります。MSBuildのトラップエラーステータス

ループ内で、反復が失敗したかどうかを検出する必要があります。しかし、私は関係なく実行を続けたいと思います。バッチ処理の後、TeamBuildに結果を報告するために1つ以上のエラーが発生したかどうかを知る必要があります。

IOW、擬似コードで:

Task Name=RunTests 
    CreateItems 
    ForEach item CallTarget Target=RunTest ContinueOnError=true 
    CombineNUnitResults 
    Report success/failure 

Task Name=RunTest 
    XUnit item 

私は、これは、カスタムタスクすることなく達成することができることを望ん(またはJonneがしたようxunit.netのMSBuildタスクをハッキング)しています。 (しかし、MSBuildコミュニティやSdcのタスクを使用して喜んで)

と私はこれを行うことはできません、私はJonneの変更をNUnitタスクもxunitタスクにすることを探しているでしょう

も参照してください:How do I get Team Build to show test results and coverage for xUnit.net test suite?

答えて

6

これは、我々が何をすべきかです:

<NUnit Assemblies="@(TestAssemblies)" 
    ToolPath="$(NUnitPath)" 
    WorkingDirectory="%(TestAssemblies.RootDir)%(TestAssemblies.Directory)" 
    OutputXmlFile="@(TestAssemblies->'%(FullPath).$(NUnitFile)')" 
    Condition="'@(TestAssemblies)' != ''" 
    ExcludeCategory="$(ExcludeNUnitCategories)" 
    ContinueOnError="true"> 
    <Output TaskParameter="ExitCode" ItemName="NUnitExitCodes"/> 
</NUnit> 

<Error Text="Test error(s) occured" Code="%(NUnitExitCodes.Identity)" Condition=" '%(NUnitExitCodes.Identity)' != '0' And '@(TestAssemblies)' != ''"/> 

これに関係なく、障害のすべてのユニットテストを実行しますが、何らかの障害があった場合は、すべてが実行された後に失敗します。ノートContinueOnError="true"がすべて実行され、最後のエラーが失敗したかどうかを確認します(nunit 0は成功を示し、それ以外は何も失敗です)。

注:これはMSBuildCommunityTasks NUnitタスクを使用していますが、単にexecをnunit exeで使用しているのであれば、同じ効果が得られます。出力 "ExitCode"は、ToolTask​​から継承するすべてのタスクに共通です。

+0

こんにちはマイク、返信に時間をかけていただきありがとうございます。私の読書から、ExitCodeはカスタムNUnitタスクプロパティで、xUnitタスクには実装されていません。 (NUnitタスクは複数のアセンブリも必要とする(xUnit doesnt、これはパラメータがAssemblyと呼ばれ、xUnit codeplex Discussionsについての議論がある))。今私はノートビットを読んで、私はより多くの研究をする必要があることがわかります。このコメントを削除し、私がそれを行うときにもっと賢明なものに置き換えます(私はExitCodeがNUnitとExecだけであると思っていました)。いい仕事私は途中でMSPressの本を持っています! –

+0

ああ - xunitタスクはToolTask​​から派生していないので、[codeplexサイトに要求している問題](http://xunit.codeplex.com/WorkItem/View.aspx?WorkItemId=7954)を作成してください。それが終わったら、アセンブリリストを反復処理し、XMLをマージするためにいくつかのきれいなMSBuildの処理をするだけです。 –

+0

+1 - 私は同様の問題を抱えていましたが、この答えは直接解決できませんでした。正しい方向 –