2010-11-22 6 views
2

TFSビルドにNUnitテストを行うためのカスタムロジックを書きました。テストが失敗した場合を除いて、ビルドが部分的に成功した場合を除いて、すべてがうまく動作します。私はそれが失敗するようにどのように伝えることができるのか誰にでも分かる?カスタムロジックの実行後にTFSビルドが失敗することはありません

は、ここで私がしようとしているものです:

<BuildStep Message="Integration Tests Passed" 
    Condition="$(TestsResult) == 'True'" 
    TeamFoundationServerUrl="$(TeamFoundationServerUrl)" 
    BuildUri="$(BuildUri)" 
    Id="$(IntegrationTestsStepId)" 
    Status="Succeeded" /> 
<BuildStep Message="Integration Tests FAILED" 
    Condition="$(TestsResult) != 'True'" 
    TeamFoundationServerUrl="$(TeamFoundationServerUrl)" 
    BuildUri="$(BuildUri)" 
    Id="$(IntegrationTestsStepId)" 
    Status="Failed" 
    CompilationStatus="Failed" 
    TestStatus="Failed"/> 
<!-- If NUnit failed it's time to error out --> 
<Error Condition="$(TestsResult) != 'True'" Text="Unit Tests Failed" /> 

答えて

2

を失敗します魔法:

<SetBuildProperties TeamFoundationServerUrl="$(TeamFoundationServerUrl)" 
         BuildUri="$(BuildUri)" 
         CompilationStatus="Failed" 
         TestStatus="Failed" 
         Condition="'$(TestsResult)' != 'True'"> 
</SetBuildProperties> 


<Error Condition="'$(TestsResult)'!='True'" Text="Smoke Tests Failed" /> 
<SetBuildProperties TeamFoundationServerUrl="$(TeamFoundationServerUrl)" 
         BuildUri="$(BuildUri)" 
         CompilationStatus="Succeeded" 
         TestStatus="Succeeded" 
         Condition="'$(TestsResult)' != 'False'"> 
</SetBuildProperties> 

私はそれがCompilationStatusに信号を送るために必要に帰着考えるとTestStatus

1

これは、チームビルドでのユニットテストのためのデフォルトの動作です。これはうまくいかないかもしれませんが、$(TestResult)を設定してOKになるように、nUnitではなくMStestを使用します。あなたはVS2008 SP1はビルドサーバーにインストールしている場合は、(追加のプロパティ]セクションで)あなたのTfsBuild.projに次の行を追加することができ、それはそれだった<SetBuildProperties>たビルドに

<TreatTestFailureAsBuildFailure>true</TreatTestFailureAsBuildFailure>

+0

残念ながら、私たちはボックスにSP1をインストールしていないので、属性が私たちのためには機能しません。最後に部分的な失敗を解決するだけでした。 – Helephant

関連する問題