定制逻辑运行后无法使TFS构建失败
问题描述:
我已经编写了一些定制逻辑,以便将NUnit测试转换为TFS构建。除非测试不通过构建部分成功而不是失败,否则这一切都工作得很好。任何人都知道我可以告诉它失败?定制逻辑运行后无法使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" />
答
这是<SetBuildProperties>
那是魔术:
<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
答
这是团队建设的单元测试的默认行为。我们使用MStest而不是nUnit,所以这可能无法正常工作,但是您设置了$(TestResult),所以它应该可以。如果您在构建服务器上安装VS2008 SP1中,你可以添加以下行到您的TfsBuild.proj(在附加属性部分),它应该构建失败
<TreatTestFailureAsBuildFailure>true</TreatTestFailureAsBuildFailure>
不幸的是,我们没有在我们的盒子上安装SP1,因此该属性对我们不起作用。最后,我们不得不解决部分失败。 – Helephant 2011-03-04 15:12:06