2014-10-05 11 views
1

У меня есть набор тестов NUnit, некоторые из которых сбой прерываются, вероятно, из-за проблем с синхронизацией. Я бы хотел найти эти блочные тесты. Есть ли способ повторить каждый тест несколько раз, не добавляя атрибут Repeat() для каждого теста? Мы регулярно используем решайер и ncrunch бегунов, но также имеем доступ к nunit gui и консольным проигрывателям.Выполнение тестов NUnit несколько раз

+0

Вы можете делать слишком много в каждом модульном тесте - они должны содержать только один тест для одной части вашей системы. Можете ли вы добавить код для подозрительного модульного теста на свой вопрос? –

+0

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

ответ

2

NUnit 3

В NUnit 3, вы можете использовать Retry атрибут:

RetryAttribute используется на методе испытания, чтобы определить, что он должен быть Перекладка, если это не удается, до максимального числа раз.

Примечания:

Это не является в настоящее время можно использовать RetryAttribute на TestFixture или любой другой тип набора тестов. Только одиночные тесты могут быть повторены .

Если у теста есть непредвиденное исключение, возвращается результат ошибки, и он не повторен. Только ошибки утверждения могут вызвать повторную попытку. К конвертировать неожиданное исключение в отказ утверждения, см. ThrowsConstraint.

NUnit 2

NUnit 2 не поддерживает повторные попытки, но вы можете использовать NUnit-повторить плагин (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(); 
} 

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

+2

@Daruisz У меня более 6000 модульных тестов. Есть ли централизованный способ запуска всех тестов несколько раз? –

+0

@PhillipNgan: NUnit-retry позволяет поместить атрибут Retry на любой класс или метод, поэтому ответ - это невозможно сделать с помощью этого инструмента. –

+0

Но если он может быть применен к классу, то * * лучше, чем стандартный NUnit, который разрешает [Repeat] на уровне тестового метода. – demoncodemonkey