Одни и те же определения шагов в огурцах

У меня есть следующие корнишоны:

Given i go to the URL
And i enter the <NRIC or FIN> as NRIC / FIN
And i select the option to proceed Next
And i select the first available available Handset Color
And i select the option to proceed Next
And i enter <Full Name> as Name
When i select the option to proceed Next

«I select the option to proceed Next» появляется три раза. Как это должно быть написано, как в файле класса Java «Определения шагов»?


person Oh Chin Boon    schedule 16.12.2013    source источник


Ответы (2)


Помимо декларативного/императивного вопроса, подумайте, какое требование вы описываете. По этой причине я считаю полезным включать Scenario: в примеры. Очень необычно иметь так много деталей в заданном шаге.

Вы тестируете создание заказа (догадка)? Если это так, то ваши шаги ввода/выбора должны быть когда в сценарии, так что-то вроде:

Scenario: Create a new order
    Given I have gone to the URL
    When I enter the NRIC/FIN: <NRIC/FIN> 
     And I choose the first available Handset Colour
     And I enter <Full Name> as Name
    Then my new order should be confirmed (or whatever)

Однако, если вы создаете заказ просто для того, чтобы настроить сценарий для проверки чего-то еще, вы можете обмануть и просто указать, что заказ должен существовать:

Scenario: Check the status of an order
    Given that I have created an order:
       | NRIC/FIN | Colour | Full Name |
       | xxxxx    | Red    | John Doe  |
    When I check the status of my order
    Then I should see a new order...

Это зависит от автоматизации, щелкает ли она по экранам, чтобы создать этот заказ, или просто вставляет его в базу данных, важно только то, что к тому времени, когда вы доберетесь до «Когда», заказ должен существовать.

В идеальном мире BDD корнишоны должны быть написаны до реализации, но часто это не работает. Я до сих пор считаю полезным попытаться притвориться, что пишу Особенности в этом идеальном мире. Спрашивая: «Как бы я написал это до того, как мы начали разработку?» может помочь отделить фактические требования (я могу ввести заказ) от деталей реализации (я нажимаю «Далее» после ввода каждого элемента данных).

person James McCalden    schedule 16.12.2013

При написании сценариев огурца вы можете использовать как императивный, так и декларативный стиль. Я бы предпочел написать то же самое, что и ниже.

Given i go to the URL
And i enter NRIC / FIN
And i select the first available Handset Color
And i enter <Full Name> as Name
Then I should see that

Так что это зависит от того, кто будет читать ваши сценарии. Ссылка, которую стоит прочитать: императивная – декларативная.

person Bala    schedule 16.12.2013