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

Игнорировать тест или TestFixture на основе условия

У нас есть некоторые интеграционные тесты в нашем решении. Для запуска этих тестов программное обеспечение для моделирования должно быть установлено на ПК разработчика. Однако это программное обеспечение не установлено на каждом компьютере разработчика. Если программное обеспечение для моделирования не установлено, эти тесты следует пропустить иначе == > NullRefException.

Теперь я ищу способ сделать "условное игнорирование" для тестов /testfixtures. Что-то вроде

если (simulationFilesExist) делать testfixture else skip testfixture

NUnit дает некоторые полезные вещи, такие как игнорирование и явное, но не то, что мне нужно.

Спасибо

4b9b3361

Ответ 1

Используйте некоторый код в методе настройки теста или приспособления, который определяет, установлено ли программное обеспечение для моделирования или нет, и вызывает Assert.Ignore() если это не так.

[SetUp]
public void TestSetUp() 
{
     if (!TestHelper.SimulationFilesExist())
     {
         Assert.Ignore( "Simulation files are not installed.  Omitting." );
     }
}

или

[TestFixtureSetUp]
public void FixtureSetUp()
{
     if (!TestHelper.SimulationFilesExist())
     {
         Assert.Ignore( "Simulation files are not installed.  Omitting fixture." );
     }
}

Ответ 2

NUnit также дает вам возможность указать атрибут Category. В зависимости от того, как вы запускаете свои тесты, может быть целесообразно отметить все тесты, требующие симулятора с известной категорией (например, [Категория ( "RequiresSimulationSoftware" )]). Затем из NUnit Gui вы можете исключить определенные категории. Вы можете сделать то же самое из бегуна командной строки NUnit (укажите/исключить: RequiresSimulationSoftware, если применимо).

Надеюсь, что это (или предыдущий ответ tvanfosson) помогает.

Ответ 3

[SetUp]
public void TestSetUp() 
{
     if (!TestHelper.SimulationFilesExist())
     {
         Assert.Ignore( "Simulation files are not installed.  Omitting." );
     }
}

вы используете этот тип условия в TestFixtureSet Attribute. Но если этот прибор имеет параметризованный тест, то если вы хотите проигнорировать параметризованный тест этого прибора, то это будет проходить в бесконечном цикле, и ваш тест будет повесить. Таким образом, вы используете атрибут настройки лучше для условия.