如何以编程方式忽略使用TechTalk.SpecFlow和C#的一些验收测试?
发布时间:2020-12-15 06:50:35 所属栏目:百科 来源:网络整理
导读:我有几个功能文件与一些场景.我需要忽略一些情况,或功能,标记一些@tag取决于一些条件.我已经读了 specflow documentation,但没有找到可用于我的解决方案的东西.我想用这样的东西 [BeforeScenario("sometag")]public static void BeforeScenario(){ if(Ignore
我有几个功能文件与一些场景.我需要忽略一些情况,或功能,标记一些@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"); } } 但它没有奏效.也许有其他的方式动态添加或删除标签?或者ScenarioContext类中的一些方法会忽略当前的场景? 解决方法
您至少有3个选项:
> Configure将待处理的步骤视为ignoreOrPendingStepsOutcome =“忽略”来忽略,可以写: if(IgnoreTests) { ScenarioContext.Current.Pending(); } 这可能不是您想要的,具体取决于您对待处理步骤的要求. if(IgnoreTests) { Assert.Ignore(); } 我认为这是最干净/最简单的解决方案. if (IgnoreTests) { var unitTestRuntimeProvider = (IUnitTestRuntimeProvider) ScenarioContext.Current .GetBindingInstance((typeof (IUnitTestRuntimeProvider))); unitTestRuntimeProvider.TestIgnore("ignored"); } 即使您更改了单元测试提供程序,但这并不意味着此API不会在功能中断,因此这将会起作用. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |