Мы планируем использовать Огурец в нашем проекте для приемочных испытаний.
Когда мы пишем scenario
в огурце feature
, мы пишем список операторов Given
, When
и Then
.
Поскольку мы используем проект cucumber-jvm, операторы Given
, When
и Then
связаны с методами Java в ( JUnit).
Я хочу знать, что является лучшей организацией для кода, связанного с Given
/When
/Then
в структуре проекта. Моя главная забота заключается в поддержании тестов огурца на большом проекте, где число сценариев весьма важно и особенно в отношении предметов, которые разделяют между функциями.
Я вижу как минимум 2 основных подхода:
-
Каждая функция связана с ее собственным классом JUnit. Поэтому, если у меня есть файл с огурцом
foo/bar/baz.feature
, я найду выпущенный классfoo.bar.Baz
JUnit с соответствующими аннотированными методами@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 может помочь?).
Я совершенно новичок в огурце, поэтому, возможно, мой вопрос не является хорошим вопросом, и со временем и опытом структура будет очевидна, но я хочу получить хорошие отзывы о ее использовании...
Спасибо.