#java #automated-tests #cucumber #builder
Вопрос:
В настоящее время я использую сценарии bdd Cucumber для создания и отправки запросов, а затем гарантирую, что ответ будет в порядке.
Я хотел использовать шаблон конструктора для создания своих запросов, но я не уверен, правильно ли я его использую.
Вот пример моего класса поиска, который использует lombok builder.
@Builder() @Data @Getter public class Search { private Preferences preferences; private String pos; private String languageCode; @Singular("traveler") private Listlt;Travelergt; traveler; }
а вот пример класса предпочтений, который является частью класса поиска. Обратите внимание, что здесь я не использую lombok builder
@Accessors(chain = true) @Setter public class Preferences { private String foo; private String bar; }
Вот пример моих определений шагов
public class SearchSteps { Preferences preferences = new Preferences(); @Given("^user adds perferences") public void userAddsPerferences(String foo) throws Exception { preferences.setFoo(foo); } @Given("^user sends search$") public void user_sends_search(String bar) throws Exception { preferences.setBar(bar); Search search = Search.builder() .preferences(preferences) .languageCode("en") .pos("test") .build(); }
Поэтому объясню немного подробнее. Я знаю, что когда пользователь отправляет объект поиска, ему всегда нужно будет добавить предпочтение с набором строк строки. Я также знаю, что пользователь иногда захочет добавить дополнительные настройки перед отправкой поискового запроса, поэтому шаг userAddsPerferences будет использоваться в некоторых тестах, но не во всех (Примечание: я добавил только два поля в настройки, чтобы проиллюстрировать проблему).
Первоначально я добавил строители ломбока ко всем классам объектов, которые использует Поиск, но затем я не смог найти способ распространить создание объекта предпочтений на несколько этапов.
Можно ли создавать такие объекты меньшего размера по шагам (при необходимости) с помощью цепных сеттеров, а затем создавать основной объект запроса с помощью шаблона компоновщика?
или я переосмысливаю использование шаблона Builder, и все ли аккуратные цепные сеттеры, которые я использую из шаблона?
Комментарии:
1. Я не уверен, в чем именно заключается ваша проблема.. Вы спрашиваете о том, как разделить предпочтения между всеми возможными шагами в вашем сценарии?
2. Поэтому, если использовать конструктор ломбок, он создаст неизменяемые объекты, это означает, что я не могу распределить создание предпочтений по шагам, поэтому я удалил конструктор из этого класса, мне просто интересно, нормально ли это и должен ли я использовать конструктор только для конечного объекта поиска?