[BeforeScenario("soMetag")]public static voID BeforeScenario(){ if(IgnoreTests) { // This is the hot spot Scenario.DoSomethingToIgnoreScenarioIfConditionButRunScenarioIfConditionFalse(); } }
我也试图动态添加或删除标签
[BeforeScenario("soMetag")]public static voID BeforeScenario(){ if(IgnoreTests) { ScenarioContext.Current.ScenarioInfo.Tags.ToList().Add("ignore"); } }
但它没有奏效.也许有其他的方式动态添加或删除标签?或者ScenarioContext类中的一些方法会忽略当前的场景?
解决方法 您至少有3个选项:> Configure将待处理的步骤视为ignoreOrPendingStepsOutcome =“忽略”来忽略,可以写:
if(IgnoreTests){ ScenarioContext.Current.Pending();}
这可能不是您想要的,具体取决于您对待处理步骤的要求.
>使用内置方法的单元测试框架在运行时忽略测试.所以如果你使用例如NUnit然后与Assert.Ignore():
if(IgnoreTests){ Assert.Ignore();}
我认为这是最干净/最简单的解决方案.
>或者如果你想做一个测试框架不可知的方式,你不怕混乱Specflow内部,那么你可以使用IUnitTestRuntimeProvIDer接口:
if (IgnoreTests){ var unitTestRuntimeProvIDer = (IUnitTestRuntimeProvIDer) ScenarioContext.Current .GetBindingInstance((typeof (IUnitTestRuntimeProvIDer))); unitTestRuntimeProvIDer.TestIgnore("ignored");}
即使您更改了单元测试提供程序,但这并不意味着此API不会在功能中断,因此这将会起作用.
总结以上是内存溢出为你收集整理的如何以编程方式忽略使用TechTalk.SpecFlow和C#的一些验收测试?全部内容,希望文章能够帮你解决如何以编程方式忽略使用TechTalk.SpecFlow和C#的一些验收测试?所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)