Можете ли вы использовать @Given и @And для определенного шага? - PullRequest
1 голос
/ 08 ноября 2019

У меня есть несколько тестов, которые разделяют определения шагов. Например:

Scenario: test1
  Given that the sky is blue
  And that the sun is up
  When I go outside
  Then I might get a sunburn

Scenario: test2
  Given that the sun is up
  When I go outside
  Then it will be light

Оба шага "И, что солнце взошло" и "Учитывая, что солнце взошло", одинаковы в их реализации.

То, что я хотел бы, это:

@And("that the sun is up")
@Given("that the sun is up")
public void thatTheSunIsUp() {
    // Do some fancy and sunny things.
}

К сожалению, это не работает. Как я могу добиться того же, не имея дублирующих методов для равных шагов?

Ответы [ 3 ]

3 голосов
/ 08 ноября 2019

Каждый шаг в огурце определяется как Given, When или Then, но на самом деле это больше похоже на:

// ENTER PSUEDOCODE
@Step("that the sun is up")
public void thatTheSunIsUp() {
    // Do some fancy and sunny things.
}

Ключевые слова являются взаимозаменяемыми, что позволяет контекстубудь то предварительное условие (Given) тестируемого действия (When) или результат (Then).

Определяя его как вы изначально (без дублирующего раздела @And), выбудет иметь возможность использовать Given, When, Then, And, But и * в вашем файле функций в качестве ключевого слова, а бэкэнд огурца должен соответствовать вашему шагу, но то, что вы используете для своегоопределение должно соответствовать предполагаемому использованию (как описано в предыдущем абзаце)

2 голосов
/ 08 ноября 2019

Вы не можете аннотировать один и тот же метод дважды одним и тем же текстом в огурце. Однако вы можете вызвать метод, аннотированный @Given, используя And в вашем файле возможностей.

Поэтому удалите аннотацию @And или измените текст в одном из случаев.

0 голосов
/ 08 ноября 2019

Я не думаю, что вы можете, однако

Вы против использования функции @Repeatable?

Насколько я понимаю, вы можете снова использовать @Given с @Repeatable из Java8 +.

...