Запуск тестов NUnit несколько раз
У меня есть набор тестов NUnit, некоторые из которых периодически терпят неудачу, вероятно, из-за проблем с синхронизацией. Я хотел бы найти эти нестабильные юнит-тесты. Есть ли способ повторить каждый тест несколько раз, не добавляя атрибут Repeat() в каждый тест? Мы обычно используем бегунки resharper и ncrunch, но также имеем доступ к графическому интерфейсу nunit и консоли.
1 ответ
NUnit 3
В NUnit 3 вы можете использовать атрибут Retry:
RetryAttribute
используется в тестовом методе, чтобы указать, что он должен быть перезапущен в случае сбоя до максимального количества раз.Заметки:
В настоящее время невозможно использовать
RetryAttribute
наTestFixture
или любой другой тип набора тестов. Только отдельные тесты могут быть повторены.Если у теста есть непредвиденное исключение, возвращается результат ошибки, и он не повторяется. Только ошибки подтверждения могут вызвать повторную попытку. Чтобы преобразовать непредвиденное исключение в ошибку подтверждения, см.
ThrowsConstraint
,
NUnit 2
NUnit 2 не поддерживает повторные попытки, но вы можете использовать плагин NUnit-retry ( NuGet, GitHub). Пример использования:
private static int run = 0;
...
[Test]
[Retry(Times = 3, RequiredPassCount = 2)]
public void One_Failure_On_Three_Should_Pass()
{
run++;
if (run == 1)
{
Assert.Fail();
}
Assert.Pass();
}
Смотрите также
- Функция - Добавить "Повторить атрибут", чтобы повторить тест в случае неудачи. Обсуждение функции на Launchpad