Anded несколько тегов не работают должным образом в specflow - PullRequest
0 голосов
/ 21 февраля 2019

У меня есть следующий хук в моем тестовом проекте:

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

Исходя из документации SpecFlow, я должен ожидать ввода AfterFeatureMethod (), только если ScenarioContext.Current.ScenarioInfo.Tags включает оба изобязательные теги.Однако метод выполняется, даже когда доступен только Tag1.

Я что-то здесь упускаю?

1 Ответ

0 голосов
/ 21 февраля 2019

First AfterScenario не является статическим.

Если вы задаете несколько свойств для одного атрибута, они объединяются с AND.Если у вас есть несколько атрибутов, они объединяются с ИЛИ.

Из документации: https://specflow.org/documentation/Scoped-Bindings/

Если несколько атрибутов [Scope] определены для одного и того же метода или класса, атрибутыобъединяются с ИЛИ, т. е. как минимум один из атрибутов [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
        }
    }

}

Кодзаписано по памяти, я не пробовал.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...