Мы планируем использовать Огурец в нашем проекте для приемочных испытаний.
Когда мы пишем scenario в огурце feature, мы пишем список операторов Given, When и Then.
Поскольку мы используем проект cucumber-jvm, операторы Given, When и Then связаны с методами Java в ( JUnit).
Я хочу знать, что является лучшей организацией для кода, связанного с Given/When/Then в структуре проекта. Моя главная забота заключается в поддержании тестов огурца на большом проекте, где число сценариев весьма важно и особенно в отношении предметов, которые разделяют между функциями.
Я вижу как минимум 2 основных подхода:
-
Каждая функция связана с ее собственным классом JUnit. Поэтому, если у меня есть файл с огурцом
foo/bar/baz.feature, я найду выпущенный классfoo.bar.BazJUnit с соответствующими аннотированными методами@Given,@Whenи@Then. -
Разделите методы
@Given,@Whenи@Thenна "тематические" классы и пакеты. Например, если в моем сценарии огурца у меня есть операторGiven user "foo" is logged, тогда аннотированный метод@Given("^user \"([^\"]*)\" is logged$")будет находиться в методе классаfoo.user.User, но, возможно, метод@When, используемый позже в том же сценарии огурца, будет быть в другом классе и пакете Java (скажем,foo.car.RentCar).
Для меня первый подход кажется хорошим в том, что я могу легко сделать связь между моими функциями огурца и моим Java-кодом. Но недостатком является то, что у меня может быть много избыточности или дублирование кода. Кроме того, может быть трудно найти возможный существующий метод @Given, чтобы избежать его воссоздания (может помочь IDE, но здесь мы используем Eclipse и, похоже, не приводим список существующих операторов Given?).
Другой подход кажется более существенным, если у вас есть условия Given, разделенные между несколькими функциями огурца, и поэтому я хочу избежать дублирования кода. Недостатком здесь является то, что может быть сложно сделать связь между методом @Given Java и выражением Given огурца (возможно, опять же IDE может помочь?).
Я совершенно новичок в огурце, поэтому, возможно, мой вопрос не является хорошим вопросом, и со временем и опытом структура будет очевидна, но я хочу получить хорошие отзывы о ее использовании...
Спасибо.