Не удается вызвать сбой сборки TFS после запуска пользовательской логики - PullRequest
2 голосов
/ 22 ноября 2010

Я написал некоторую пользовательскую логику для получения тестов 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 ]

2 голосов
/ 13 апреля 2011

Это была <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

1 голос
/ 01 марта 2011

Это поведение по умолчанию для юнит-тестов в Team Build.Мы используем MStest, а не nUnit, так что это может не сработать, но вы устанавливаете $ (TestResult), поэтому все должно быть в порядке.Если на вашем сервере сборки установлен VS2008 с пакетом обновления 1 (SP1), вы можете добавить следующую строку в ваш файл TfsBuild.proj (в разделе дополнительных свойств), и сборка будет неудачной

<TreatTestFailureAsBuildFailure>true</TreatTestFailureAsBuildFailure>

...