2014-03-04 4 views
5

Я новичок в Cucumber, и я использую огурец-java. Файлы функций огурца отлично смотрятся. Однако повторное использование определений шагов действительно мешает организации кода определения шага. Самый интуитивный способ организовать определения шага - просто следить за организацией файлов функций, а именно, одним классом для одной функции. Однако этот способ завинчивается, если в двух файлах функций есть два одинаковых шага, потому что вы пропустите один шаг в одном из классов, что нарушит согласованность всей структуры. Однако я не могу убедить себя использовать другие способы прямо сейчас. Итак, что является разумным способом организации определений шагов при использовании огурца-java?Как организовать определения шагов при использовании огурца-java?

спасибо.

ответ

3

Начните с того, как вы это делаете, и как только вы осознаете, что шаг используется повторно, переместите его в класс ReUsableSteps или что-то в этом роде. Таким образом, если в классе нет шага, то он должен быть в ReUsableSteps. Просто мысль.

1

У вас может быть отдельный пакет в качестве заполнителя для классов, который определяет общие этапы. Добавьте этот пакет как glue.

0

Лучший способ использования огурца - свести к минимуму дублирование определения шага. Мы должны сосредоточиться на написании определения шага, чтобы избежать любого кода, специфичного для класса или функциональности в методе шагов класса StepDefinition, потому что таким образом он не может быть обобщен, он должен иметь общий код, который может использоваться для разных шагов и кода для распространяясь на отдельный класс, для которого предназначен шаг, и конкретная логика для каждого шага должна находиться в отдельном классе. Таким образом, мы можем избежать дублирования.

Пример: - Предположим, у нас есть компонент файла функция, которая содержит шаг «Компонент А должен получить ответы», его класс реализации класс ComponentStepDefinition, когда мы реализуем это на этапе определения мы не должны использовать любую логику для переборе или вычисления ответов для компонента A, скорее передайте значение классу, который выполняет связанную с этим задачу, таким образом вам нужно реализовать «Компонент B должен получать ответы», тогда можно использовать такое же определение шага, и логика B будет быть в другом классе.

0

Отсортируйте определения шага по общей функциональности, связанной с вашим доменом. Их не нужно связывать с конкретными файлами функций.

Например, одна из наших возможностей - предоставить нашим партнерам оценки (как они работают на нашей платформе). У нас есть несколько определений шагов, связанных с этими оценками в файле ScoreSteps. У нас могут быть другие действия, связанные с партнерами, которые будут в файле PartnerSteps. Это также облегчает использование вспомогательных методов, связанных с определенным объектом домена.

Эти файлы были бы совершенно разными для вас, в зависимости от вашего домена.

Также обратите внимание, что ваша IDE будет знать, был ли уже определен шаг или нет (по крайней мере, в шагах IntelliJ, которые не определены, отмечены желтым цветом).

Смежные вопросы