Запуск тестов 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();
}

Смотрите также

Другие вопросы по тегам