Ошибка атрибута повтора (NUnit) для регрессионных тестов - PullRequest
0 голосов
/ 29 января 2019

Мы столкнулись с проблемой при запуске автоматических тестов, написанных на C #.Мы используем NUnit и для Retry в документации (https://github.com/nunit/docs/wiki/Retry-Attribute) Я обнаружил, что «Если у теста есть непредвиденное исключение, оно не сохраняется. Только ошибки подтверждения могут вызвать повторную попытку.» Проблема в том, что у нас есть проблемы вв других местах - нет утверждений (например, неожиданных исключений) из-за таймаутов, перезапусков или изменений на тестовой машине во время построения тестов.

Мы используем NUnit 3.11 В нашей сборке 1 из 300 тестов не прошел из-за непредвиденных исключений,и сборка не удалась. Если тест будет повторен (для каждого исключения), мы можем избежать этой проблемы.

[Test, Sequential] [Retry (MaxRetryCount)] .....

Фактически: тесты повторяются только после сбоя подтверждения, но проблема в том, что мы хотим перезапустить их (например, MaxRetryCount = 4) после обнаружения каждого исключения.

Ожидается: тест повторного запуска после каждогоисключение.

1 Ответ

0 голосов
/ 30 января 2019

Хотя вы на самом деле не задавали вопрос, я предполагаю, что это что-то вроде «Учитывая, что NUnit работает не так, как я думал, что я могу с этим поделать?»

Обычный ответ заключается в том, что вы должны принять вызов (или вызовы), которые приводят к ошибке, и заключить его (их) в утверждение.

Например, предположим, что ваши тестовые вызовы

DoSomethingThatMayNotWork();

, который где-то в глубине души выдает исключение и завершает прогон.Вы знаете, что это происходит с перебоями, но вы бы предпочли повторить попытку и поместили RetryAttribute в наш метод тестирования.

В этом случае замените вышеприведенное на что-то вроде

Assert.That(() => DoSomethingThatMayNotWork(), Throws.Nothing);

Это преобразует любое необработанное исключение в сбой, и тест будет повторен.

Вы можете уточнить это, проверив наличие конкретных ожидаемых исключений, чтобы тест не повторялся на чем-то вроде NRE, что обычнобыть ошибкой программирования.

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