Ответ 1
У вас есть как минимум 3 варианта:
-
Настроить Specflow для обработки ожидающих шагов как игнорировать с помощью
missingOrPendingStepsOutcome="Ignore"
, тогда вы можете написать:if(IgnoreTests) { ScenarioContext.Current.Pending(); }
Возможно, это не то, что вы хотите, в зависимости от ваших требований для ожидающих шагов.
-
Используйте встроенную модульную систему тестирования, чтобы игнорировать тест во время выполнения. Поэтому, если вы используете, например, Затем NUnit с Assert.Ignore():
if(IgnoreTests) { Assert.Ignore(); }
Я думаю, что это самое простое/простое решение.
-
Или, если вы хотите сделать это с помощью арифметического метода тестирования, и вы не боитесь запутаться с внутренними компонентами, то вы можете использовать интерфейс
IUnitTestRuntimeProvider
:if (IgnoreTests) { var unitTestRuntimeProvider = (IUnitTestRuntimeProvider) ScenarioContext.Current .GetBindingInstance((typeof (IUnitTestRuntimeProvider))); unitTestRuntimeProvider.TestIgnore("ignored"); }
Это будет работать, даже если вы измените свой тестовый модуль, но он не гарантирует, что этот API не сломается в этой функции.