2015-05-14 5 views
0

У меня есть два файла функций с некоторыми сценариями. когда я создаю определения для них, первый файл feature1.cs имеет все этапы. когда я нажимаю на второй файл функции и генерирую определение, он повторно использует некоторые функции из первого файла feature1.cs, так как некоторые сценарии дублируются.Определение нескольких шагов для шагов функции specflow

Теперь у меня есть [BeforeScenario] для обоих файлов. Но когда я запускаю второй файл функции, он заканчивает использование [BeforeScenario] первого файла.

я заметил, что Binding тег в файле feature1.cs имел имена как мой художественный файл как

[Binding, Scope(Feature = "feature1"), Scope(Feature="feature2")] 

Так я извлекал вторую feature2 и поместил его в своем файле feature2.cs.

Теперь я могу запустить [BeforeFeature] из функции2.cs, но когда я нажимаю на шаг сценария и перехожу к defination, он говорит «Множество шагов найдено», несмотря на все многоразовые шаги, находящиеся в самом файле feature1.cs.

Надеюсь, это имеет смысл.

+2

Пожалуйста, пост примеры тех шагов, которые она думает, являются дубликатами. –

ответ

1

Первое, что вам нужно понять, это то, что все определения шага в specflow являются глобальными. Чтобы проиллюстрировать это, скажем, у меня есть 3 файла: Feature1.feature, Feature2.feature и myStepDefs.cs.

В myStepDefs.cs У меня есть следующий код:

[Given(@"I have asked a new question")] 
public void GivenIHaveAskedANewQuestion{ 
    //Some Code 
} 

Теперь в моем feature1 файле у меня есть этот сценарий

Scenario: I ask a question and get a bad answer 
Given I have asked a new question 
When I get an answer 
And this answer is not helpful 
Then I should Downvote this answer 
And I should explain why it does not help answer my question 

и в моем файле feature2 У меня есть этот сценарий

Scenario: I ask a question and get a good answer 
Given I have asked a new question 
When I get an answer 
And this answer is helpful 
Then I should upvote this answer 
And I should mark this answer as accepted 

В этом случае мы повторно используем данный шаг, но нам нужно только одно определение шага, а не одно для каждого featu число рейнольдса

Теперь вы также объясните, что у вас есть 2 [BeforeScenario] StepDefs. Они запускаются до КАЖДОГО Сценария, поэтому, если они делают то же самое, снова вам нужен только один. Если они делают разные вещи, и вы хотите, чтобы они запускались только до заданного параметра/сценария, то я бы порекомендовал вам взглянуть на this, вам нужно назначить область для этих привязок, чтобы она выглядела так:

[BeforeScenario, Scope(//your scope)] 

таким образом шаги BeforeScenario работать только за рамки данного

+0

Спасибо за ответ. Наверное, я должен был упомянуть о том, что я знаю о функции reusablity от specflow. Проблема, с которой я столкнулся, заключалась в том, что я получал сообщение об ошибке «Несколько шагов», когда не было нескольких шагов. Как я уже упоминал в своем комментарии, проблемы с привязкой также были исправлены, когда я изменил область действия. Но с другой стороны, я получал несколько проблем, которые были обнаружены. – AutomateFr33k

+0

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

Смежные вопросы