Метод SpecFlow [AfterScenario] выполняется дважды - PullRequest
0 голосов
/ 06 ноября 2018

Я использую SpecFlow с C # для запуска некоторых тестовых сценариев BDD. Я определил схему сценария, и мне нужен метод для запуска после каждого примера схемы сценария. Атрибут [AfterScenario] присутствует в этом методе. Однако я вижу, что метод [AfterScenario] выполняется дважды после каждого примера схемы сценария.

Не знаю, имеет ли это какое-то значение, но в какой-то момент у меня был один и тот же метод [AfterScenario] в другом классе по ошибке, и оба они были запущены. Однако я удалил один из них и перестроил проект. Может быть, что-то где-то осталось?

Я видел несколько примеров, когда люди жалуются на то, что хуки AfterScenario и BeforeScenario запускаются дважды, но именно тогда присутствуют теги. Я не использую какие-либо теги.

Ответы [ 2 ]

0 голосов
/ 11 ноября 2018

Возможно, вы вызываете свой метод, который представлен в Сценарии после использования в каком-либо другом методе. Я думаю, что вы не очистили все места, где это можно назвать.

0 голосов
/ 06 ноября 2018
  1. Укажите теги сценария внутри атрибута [AfterScenario]. -> [AfterScenario("scenarioTagName")]. Если вы не используете теги, методы с атрибутом [AfterScenario] будут выполняться после каждого сценария. Конечно, бывают ситуации, когда вы используете атрибуты [AfterScenario] без тегов, но, насколько я понимаю, вы не хотите, чтобы каждый метод с атрибутом [AfterScenario] выполнялся после каждого выполнения сценария.
  2. О выполнении 2-го метода с атрибутом [AfterScenario] ... Не имеет значения, в каких методах класса с атрибутом [AfterScenario] определены, если у классов есть атрибут [Binding]. С атрибутом [Binding], назначенным для классов, specFlow может выполнять механизм под капотом.

Если вы хотите добавить тег в свой план сценария, попробуйте это в вашем файле .feature:

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