首页 > 解决方案 > 如何使用编程忽略规范流测试

问题描述

我想根据某些条件执行规范流场景,如果以编程方式不满足条件,则跳过测试。

我创建了一项针对不同国家/地区执行的测试,但我只想为一个国家/地区执行测试,而不是全部。

我试过scenariocontext.current.pending(); 在这种情况下,步骤将被跳过,但在 Jenkins 中,测试结果显示为失败。

标签: specflow

解决方案


从 SpecFlow 3.1 开始,您可以使用 UnitTestRuntimeProvider 来完成。


    [Binding]
    public sealed class StepDefinitions
    {
        private readonly IUnitTestRuntimeProvider _unitTestRuntimeProvider;

        public CalculatorStepDefinitions(IUnitTestRuntimeProvider unitTestRuntimeProvider)
        {
            _unitTestRuntimeProvider = unitTestRuntimeProvider;
        }

        [When("your binding")]
        public void YourBindingMethod()
        {
            _unitTestRuntimeProvider.TestIgnore("This scenario is always skipped");
        }
    }

忽略就像跳过场景。请注意,因为它对于不同的单元测试运行器(xUnit、NUnit、MSTest、SpecFlow+ Runner)的行为略有不同。

此外,这仅适用于步骤定义。不可能在钩子中使用它。


推荐阅读