Как отладить сбой NUnit только в сборке CI? - PullRequest
0 голосов
/ 12 сентября 2018

У меня проблемы с выполнением моих тестов с NUnit в моей сборке Jenkins. Там, где все тесты завершаются успешно, когда я запускаю их вручную (с помощью Cake сценария сборки) - даже непосредственно на сервере сборки - они терпят неудачу при запуске во время сборки в Jenkins, которая вызывает тот же сценарий сборки.

В качестве вывода я получаю следующее сообщение:

Произошла ошибка при выполнении задачи «Тест». Ошибка: NUnit3: нераспознанная ошибка (код выхода -1073740940).

При запуске NUnit с TraceLevel = TraceLevel.Debug я получаю файл трассировки, который выглядит нормально, пока он просто не останавливается после той же строки:

15:49:14.342 Debug [ 6] Dispatcher: Using Direct strategy for <my failing test>

Я бегу NUnit с InProcess и одним работником.

Это всегда один и тот же тест, но только при запуске в сборке CI. Я понимаю, что почти невозможно диагностировать точную проблему отсюда - я спрашиваю, есть ли какой-нибудь способ получить больше информации о том, что именно терпит неудачу?

1 Ответ

0 голосов
/ 12 сентября 2018

Судя по коду ошибки, это ошибка повреждения кучи (C0000374). Для получения дополнительной информации см. https://blogs.msdn.microsoft.com/calvin_hsia/2015/01/30/heap-corruption-exception-0xc0000374/ с некоторыми примерами того, как генерируется такая ошибка.

Я предполагаю, что ваш тест делает что-то нехорошее и в большинстве случаев сходит с рук, но выполнение под Jenkins может изменить среду настолько, что он выдаст исключение.

Это очень сложно диагностировать. Прежде всего я хотел бы выяснить, выполняется ли какой-либо ваш тестовый код вообще. Внутренняя трассировка NUnit, по-видимому, указывает на то, что тест был отправлен (поставлен в очередь), но фактически не снят с очереди и не запущен. Однако мы иногда теряем несколько событий, когда бегун падает.

Вы можете попытаться запустить с --workers = 0, чтобы посмотреть, даст ли вам упрощенный код выполнения (без очередей) больше информации.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...