Как вы противостоите анти-паттернам BDD-скриптов в Specflow? - PullRequest
6 голосов
/ 04 августа 2011

Это пример одного из наших приемочных тестов:

Feature: Add an effect to a level
In order to create a configuration 
As a user
I want to be able to add effects to a level

Scenario: Add a new valve effect to a level
Given I have created a level named LEVEL123 with description fooDescription
And I am on the configuration page
When I click LEVEL123 in the level tree
And I expand the panel named Editor Panel
And I click the Add Valve Effect button
And the popup named ASRAddVal appears
And I click the Add new button
And I fill in these vertical fields
     | field name  | value                |
     | Name        | Effect123            |
Then I should see the following texts on the screen
     | text                     |
     | Effect added : EFFECT123 |

Мы чувствуем, что это становится немного многословно, и мы хотим услышать, как вы сокращаете шаги в Specflow.Из того, что я читал до сих пор, создание определенных одноразовых шагов не рекомендуется, так что считается «наилучшей практикой» при выполнении этого в SpecFlow?

Обновление:

Кто яЯ хочу сказать, что я узнал, что вы должны попытаться создать общие шаги, чтобы повторно использовать их в нескольких тестах.Одним из способов сделать это является параметризация ваших шагов, например: «Учитывая, что я создал уровень с именем ..», но параметризация также вводит многословие.Я хочу закончить тем, что Брайан Оукли предлагает в своем ответе, но я просто не могу понять, как я могу это сделать, не создавая шагов, которые очень специфичны для каждого теста.Это опять-таки означает, что у меня будет много шагов, которые уменьшают удобство обслуживания.Похоже, у SpecFlow есть какой-то способ определения сокращенных шагов путем создания файла, который наследует базовый класс, называемый «Шаги», но это все еще вводит новые шаги.покажи мне хороший подход к тому, чтобы закончить с ответом Брайана Оуклиса, который можно поддерживать.

Ответы [ 3 ]

9 голосов
/ 04 августа 2011

Я бы упростил это до чего-то вроде этого:

Scenario: Add a new valve effect to a level
Given I have created a new level
When I add a new valve effect with the following values
     | field name  | value                |
     | Name        | Effect123            |
Then I should get an on-screen confirmation that says "Effect added: Effect123"

То, как я подошел к проблеме, состояло в том, чтобы представить, что вы полностью переделываете интерфейс пользователя.Будет ли тест еще пригоден для использования?Например, тест должен работать, даже если в редизайне нет кнопки «Добавить» или вы больше не используете всплывающее окно.

0 голосов
/ 02 сентября 2011

Могу ли я предположить, что, возможно, код, который вы тестируете, должен пройти модульные тесты.Возможно, что вы подразумеваете под «специфичным для теста», это отдельные юнит-тесты, которые не включены в ваши приемочные тесты.

Просто мысль:)

0 голосов
/ 19 августа 2011

Вы можете попытаться сформулировать их в общем виде и использовать параметры.

Given i have create a new: Level

':' только для того, чтобы вы могли идентифицировать параметр.Это означает, что у вас будет одна общая точка входа для шага, который должен создать что-то новое.Теперь до шага посмотреть на параметр уровня и создать новый уровень

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

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