Cucumber JVM ак выполнить pre-condition один раз на весь feature file

:blush:
При использование Cucumber JVM :

  1. как указать порядок выполнения сценариев?
    Пример: Feature1 has Scenario1, Scenario2
    Еxpected: сначала должен быть выполнен Scenario2, затем Scenario1
  2. как выполнить pre-condition один раз на весь feature file?
    Пример: Feature1 has Scenario1, Scenario2. There is pre-condition for both scenarios
    Expected: cначала должен быть выполнен pre-condition затем сценарии. Порядок выполнения сценариев не важен

По первому вопросу - идей нет.
По второму вопросу - такой фичи в Cucumber JVM нет и не планируется. Не могу найти тред, но в какой-то дискуссии разработчик кукумбера прямо заявил, что считает это излишним, хотя много людей присоединились к просьбе.

Есть вариант - организовать всё самостоятельно, т.е. прописать шаг в Background и запоминать состояние: выполнялся или нет. Другая проблема - что выполненный в одной фиче, этот шаг будет считаться выполненным и в следующей. В этом случае, можно в Background передавать уникальный параметр - имя фичи.

То есть, получится примерно так:

Feature: Feature AAA

    Background: # выполняется перед каждым сценарием
        Given Precondition is executed for "Feature AAA"
# далее сценарии

И в шагах:

static Set<String> preconditionsExecuted = new HashSet<>();

@Given("^Precondition is executed for \"([^\"]*)\"$")
public void executePrecondition(String key) {
    if (!preconditionsExecuted.contains(key)) {
        runMyPreconditionForFeature(key);
        preconditionsExecuted.add(key);
    }
}

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

1 лайк

По 1. можно посмотреть тут Specify execution order of cucumber features | Testing by Justin Ko но лучше придерживаться парадигмы атомарности тестов(независимости друг от друга). Ну или тогда для каждого делать прекондишн.

По 2. хорошо было бы использовать jBehave, но это уже потребует глобальных переделок http://jbehave.org


Do different tests instead of repeating the same tests

2 лайка