Подтвердить что ты не робот

Программно пропустить тест nunit

Есть ли способ завершения теста nunit и сообщить тест-бегуну, что его следует считать пропущенным/проигнорированным, а не успешным или неудачным?

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

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

Я знаю атрибут [Игнорировать], но он скомпилирован. Я ищу временный, программный эквивалент. Что-то вроде:

if (testNotApplicable)
    throw new NUnit.Framework.IgnoreTest("Not applicable");

Или программно пропустить тест просто неправильно? Если да, то что мне делать?

4b9b3361

Ответ 1

Assert.Ignore();

- это именно то, о чем вы просите, хотя есть также:

Assert.Inconclusive();

Ответ 2

У меня есть метод TestInit(), TestInitialize, где есть условие вроде:

    //This flag is the most important.False means we want to just ignore that tests
    if (!RunFullTests)
        Assert.Inconclusive();

RunFullTests - глобальная логическая переменная, расположенная в постоянном классе. Если мы установим это в false, весь тестовый класс будет проигнорирован, и все тесты в этом классе будут проигнорированы.

Я использую это, когда есть тесты интеграции.