Определения шагов огурца не обнаруживаются при запуске из командной строки

Я следил за книгой огурцов для Java, и этот пример, над которым я работаю, очень похож на то, что было в главе 2. Он находится в строке cmd, поскольку я не хочу включать его в IDE на данном этапе.

Feature: practice test
  Scenario Outline: not CheckingOut bananas
    given abc
    when place holder2
    then place holder3

Шаги теста:

public class SimpleTest {
    @Given("^abc")
    public void part1() throws Exception {
        System.out.println("part 1");
        throw new Exception("an exceptoin");
    }

    @When("place holder2")
    public void part2(){
        System.out.println("part 2");
    }

    @Then("place holder3")
    public void part3() {
        System.out.println("part 3");
    }

}

Я пробовал "abc", "^ abc", "give abc" ... на @Given

Я управляю этим с помощью следующего файла bat, определения шагов компилируются, и файл класса присутствует. С помощью опции -g (glue) я понимаю, что имя пакета является значением аргумента, поэтому я сделал это как можно проще, но я получаю 0 найденных сценариев. Файл bat прост:

echo cucumber compile and execution
javac -cp "lib/*" step_definitions/SimpleTest.java 
javac -cp "lib/*;web/WEB-INF/lib/*" test/java/xxxxx/zzzz/referral/out/batch/RunCukesTest.java 
java -cp "lib/*;web/WEB-INF/lib/*;.;test/java/*" cucumber.api.cli.Main -p pretty -g step_definitions features

стабильно получаю следующие результаты:

Feature: practice test

  Scenario Outline: not CheckingOut bananas ←[90m# bogus.feature:2←[0m
    given abc
    when place holder2
    then place holder3


0 Scenarios
0 Steps
0m0.000s

Очевидно, что интерфейс командной строки находит файл функций, но скомпилированные определения шагов не обнаруживаются. Сомневаюсь, что это проблема классового пути. Я предоставил дополнительные каталоги и переместил файл определения шага. CLI не берет файл функций и не сопоставляет его с скомпилированными определениями. Спасибо заранее. Много раз набирая эти вопросы, решение приходит, но на этом его нет.

Если файлы * .feature необходимы для запуска огурца и они должны соответствовать определению скомпилированного шага, даже если junit подключается к средству выполнения теста cucumber.class, книга могла бы оставить меньше неопределенности. Форум для книги выглядел тонким. Наверное нужно зайти на github или где-то там исходный код.


person Michael Sampson    schedule 14.03.2016    source источник


Ответы (2)


Во-первых, оставьте первую букву ключевого слова заглавной. Дано и др.

Во-вторых, шаги, определенные в схеме сценария, выполняются только и только тогда, когда в «примере» присутствует несколько записей. Более того, эти шаги будут выполнены n раз для n записей.

Это можно рассматривать как неявный цикл, предоставляемый файлом функций.

person GaurZilla    schedule 29.05.2017

Попробуйте использовать заглавные буквы в словах «Дано», «Когда», «Тогда», «И & Но».

Огурец позволяет текст перед каждым сценарием и функцией, чтобы дать больше описания того, что будет происходить в каждом из них. Использование заглавных букв для Данного, Когда, Затем, И & Но - это стандарт, которого они придерживаются, чтобы знать, что есть шаг в этом направлении.

Итак, для вашего примера:

Feature: practice test

Scenario: not CheckingOut bananas ←[90m# bogus.feature:2←[0m
 Given abc
 When place holder2
 Then place holder3

ИЗМЕНИТЬ

Не используйте синтаксис Scenario Outline, если вы не собираетесь приводить примеры ниже, как показано здесь:

Feature: practice test

Scenario Outline: not CheckingOut bananas ←[90m# bogus.feature:2←[0m
 Given abc
 When place holder<placeholder>
 Then place holder<placeholder2>

 Examples:
|placeholder|placeholder2|
| 1         | 2          |
| 2         | 3          |
| 3         | 4          |
person KyleFairns    schedule 16.03.2016
comment
Кайл, спасибо за помощь. Крышки определенно были проблемой, так что спасибо. Кроме того, у меня есть «Outline». Я не знаю точно, что это делает, но после его удаления интерфейс командной строки ведет себя по-другому. Что "Outline" делал со мной? Интересно, почему меня отвергли? - person Michael Sampson; 16.03.2016
comment
Он попытался бы найти таблицу «Примеры» внизу сценария, но не нашел бы ее и вызвал бы недовольство по поводу того, чего он там ожидает. Для схемы сценария требуются заполнители (отмеченные скобками ‹›) внутри сценария и таблица примеров с заполнителями в качестве заголовков. - person KyleFairns; 16.03.2016