Anded多个标记在specflow中无法正常工作

问题描述 投票:0回答:1

我的测试项目中有以下钩子:

    [AfterScenario]
    [Scope(Tag = "Tag1"), Scope(Tag = "Tag2")]
    public static void AfterScenarioMethod()
    {
    }

基于SpecFlow文档,我应该只在ScenarioContext.Current.ScenarioInfo.Tags包含两个必需标记时才输入AfterFeatureMethod()。但是,即使只有Tag1可用,也会执行该方法。

我在这里错过了什么吗?

c# msbuild specflow
1个回答
0
投票

首先AfterScenario不是静态的。

如果在一个属性上定义多个属性,则将它们与AND组合。如果您有多个属性,则将它们与OR结合使用。

来自文档:https://specflow.org/documentation/Scoped-Bindings/

如果为同一方法或类定义了多个[Scope]属性,则属性与OR组合,即至少有一个[Scope]属性需要匹配。

要检查多个标签,您必须执行以下操作:


[Binding]
public class Bindings
{
    private ScenarioContext _scenarioContext;

    public Bindings(ScenarioContext scenarioContext)
    {
         _scenarioContext = scenarioContext;
    }

    [AfterScenario]
    public static void AfterScenarioMethod()
    {
        if (_scenarioContext.ScenarioInfo.Tags.Contains("Tag1") &&
            _scenarioContext.ScenarioInfo.Tags.Contains("Tag2") {
            //do you stuff
        }
    }

}

代码是从内存写的,我没试过。

© www.soinside.com 2019 - 2024. All rights reserved.