我有几个功能文件与一些场景.我需要忽略一些情况,或功能,标记一些@tag取决于一些条件.我已经读了
specflow documentation,但没有找到可用于我的解决方案的东西.我想用这样的东西
[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"); } }
解决方法
您至少有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不会在功能中断,因此这将会起作用.
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。