Anded多个标签无法在Specflow中按预期方式工作

时间:2019-02-20 22:16:13

标签: c# msbuild specflow

我的测试项目中包含以下内容:

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

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

我在这里想念东西吗?

1 个答案:

答案 0 :(得分: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
        }
    }

}

代码是从内存中写入的,我没有尝试过。