3

MSBuild を使用して xUnit.net テストを実行するビルドの自動化の一環として、アイテムのバッチをループする必要がある場合に遭遇しました。

ループ内では、反復が失敗したかどうかを検出する必要がありますが、それでも実行を継続したいと考えています。次に、バッチ処理されたビットの後、結果を 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 タスクを使用する意思がある)

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

参照:チーム ビルドで xUnit.net テスト スイートのテスト結果とカバレッジを表示するにはどうすればよいですか?

4

2 に答える 2

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タスクを使用していますが、nunit exeでexecを使用している場合は、同じ効果を得ることができます。出力「ExitCode」は、ToolTask​​から継承するすべてのタスクに共通です。

于 2009-06-29T18:12:43.300 に答える
2

1.5 ベータ版を入手してください。xunit MSBuild タスクに ExitCode 出力パラメーターを導入することで、これを修正しました。

http://xunit.codeplex.com/Release/ProjectReleases.aspx

于 2009-08-09T01:10:49.840 に答える