Automated Build - прекратить сборку, если тесты NUnit не пройдены - PullRequest
0 голосов
/ 27 мая 2011

У меня есть простой пакетный файл, который вызывает MSBuild для построения моего решения Visual Studio, затем запускает тесты NUnit решения и затем использует Wix для создания MSI. Однако я не могу понять, как остановить процесс сборки, если какой-либо из модульных тестов не пройден.

Я попробовал следующее:

nunit-console ../test.nunit
echo %ERRORLEVEL%

Но независимо от того, пройдены ли модульные тесты или нет,% ERRORLEVEL% всегда равно 0. Есть ли другой способ легко определить, провалился ли какой-либо из тестов? Я использую NUnit 2.5.9.

Ответы [ 2 ]

3 голосов
/ 27 мая 2011

Называйте меня ленивым, но я просто использую MSBuildTasks и их задачу NUnit.Тогда нужно просто установить свойство ContinueOnError так, как вы хотите.

<NUnit ContinueOnError="true" Assemblies="@(TestAssemblies)" OutputXmlFile="$(TestResultsRoot)\nunit_results.xml" ToolPath="$(TeamBuildDependenciesPath)\NUnit\">
      <Output TaskParameter="ExitCode" PropertyName="NUnitResult" />
</NUnit>
0 голосов
/ 27 мая 2011

Через некоторое время поиска выясняется, что проблема заключалась в том, что где-то в моем процессе разработки переменной ERRORLEVEL было присвоено значение.Таким образом, когда я писал echo %ERRORLEVEL%, он сообщал о переменной ERRORLEVEL, а не о фактическом коде выхода ERRORLEVEL.

Я исправил это, просто закрыв консоль и снова открыв ее.Теперь, когда модульные тесты не пройдены, код завершения больше 0. Если все тесты пройдены, код завершения равен 0.

РЕДАКТИРОВАТЬ: я полностью удалил это из моего сценария.Теперь вместо этого я добавляю nunit-console $(TargetPath) в события после сборки моего тестового проекта.Таким образом, когда я создаю решение с помощью MSBuild, оно автоматически запускает модульные тесты и сообщает об ошибке, если тесты не пройдены.При построении в Visual Studio этот подход также приводит к добавлению ошибки в список ошибок при сбое модульных тестов, что удобно для выявления новых ошибок еще быстрее.

...