SpecRun возвращает код выхода 120 с тестами @ignore

Запуск SpecRun из командной строки в рамках настройки непрерывной интеграции, а недавно проигнорированный (@ignore) тест сгенерировал код выхода 120 после завершения SpecRun.

В настоящее время мы ломаем сборку при любом коде выхода, не равном 0 (универсальный индикатор успеха!).

Что означает код выхода 120? Это просто "Тест был проигнорирован"? или это подразумевает большее?

Какие еще значения возвращаются?

Пример вывода сборки ниже. Собираем все коды выхода (на данный момент 1 задача SpecRun, поэтому собирается только 1 код выхода), и распечатываем в "коды выхода"

58>  Done.
58>  Result: all tests passed (5 ignored)
58>    Total: 478
58>    Succeeded: 473
58>    Ignored: 5
58>    Pending: 0
58>    Skipped: 0
58>    Failed: 0
58>  
58>    Execution Time: 00:00:42.4550000
58>
58>  exit codes 120
58>
58>Build FAILED.
58>
58>Time Elapsed 00:00:44.21
========== Rebuild All: 57 succeeded, 1 failed, 0 skipped ==========

person johnny g    schedule 05.04.2013    source источник
comment
58 проектов!?! Вам нужен NDepend! :-)   -  person AlSki    schedule 06.04.2013
comment
@AlSki, хар, да, мы это делаем, это совсем совсем другая тема ;)   -  person johnny g    schedule 06.04.2013


Ответы (1)


Я нашел список кодов ошибок на форуме: https://groups.google.com/forum/?fromgroups=#!topic/specrun/vPQ7z2kpkbs

После упорядочивания списка по коду ошибки получаем:

Unknown = 0,
Succeeded = 110,
Ignored = 120,
Pending = 210 
NothingToRun = 310,
Skipped = 320,
Inconclusive = 410,
CleanupFailed = 420,
RandomlyFailed = 430,
Failed = 440,
InitializationFailed = 450,
FrameworkError = 510,
ConfigurationError = 520,

На основе этого списка мы используем следующий скрипт командной строки на сервере сборки для выполнения тестов:

SpecRun.exe [...]

if errorlevel 200 exit /b %errorlevel%

exit /b 0

Мы используем команду выхода, чтобы вернуть код ошибки. Для кодов ошибок более высокого уровня (>= 200) мы возвращаем код ошибки, чтобы прервать сборку. Однако коды ошибок ниже этого предела считаются успешными, и мы возвращаем 0.

При использовании этого ограничения (200) случаи Succeeded и Ignored считаются успешными, а все остальное прерывает сборку. Если вы также хотите разрешить незавершенные тесты (210), вы можете просто проверить более высокий код ошибки в IF.

person Tz_    schedule 17.04.2013
comment
Спасибо за информацию. TechTalk не должен этого делать, поскольку код выхода 1 является довольно стандартным для некоторых типов ошибок в других приложениях. Это означает, что если вы пишете абстрактный скрипт, проверяющий результаты различных exe-файлов, то необходимо иметь дело с особой ситуацией для specrun. Фу. - person Subjective Reality; 20.06.2018
comment
В SpecFlow+Runner 3.0 мы изменили коды выхода из specrun.exe. Вы можете найти их здесь: specflow.org/plus/documentation/Test -Выполнение-Результат-Коды - person Andreas Willich; 23.03.2020