JBehave: параметры в таблице, такие как ‹СЕГОДНЯ›

Интересно, знает ли кто-нибудь, как это можно сделать.

У меня есть сценарий, похожий на следующий фрагмент. В таблице хотелось бы иметь параметры, которые можно подставлять при запуске теста. Пример фрагмента:

...
Given blah blah blah
Then yada yada yada
...
And the quotes should have details:
|Ref|Product|Issue Date|Maturity Date|
|<A VALID REF>|Vanilla Option|<TODAY>|<TODAY+3M>

Итак, что я хотел бы знать, так это то, поддерживает ли JBheave такой тип параметризации в таблице, где я могу определить значение для и где-то в коде и заменить его во время выполнения.

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


person maujee    schedule 27.01.2012    source источник


Ответы (2)


Я не играл с JBehave какое-то время (начиная с 2.X), но он не поддерживал его тогда, и я думаю, что вряд ли будет поддерживать его сейчас.

Здесь вы создаете сценарий, который работает для всех примеров. На самом деле это не сценарий — это критерии приемлемости, записанные в виде сценария. Если вы сделаете это, вы упустите другие преимущества использования конкретных примеров, особенно то, как они будоражат воображение, вызывают интересное поведение и позволяют задавать полезные вопросы и вести беседы с заинтересованными сторонами бизнеса.

В этом случае, если продукт является самым интересным в результате этого сценария, лучше всего сделать это отдельно, например.

Тогда в кавычках должен быть продукт Vanilla Option.

Еще более эффективным было бы выяснить, для кого результат полезен для, и упомянуть, каким образом он полезен, например.

Затем пользователь должен получить предложение по электронной почте, чтобы побудить его купить ванильный вариант.

Обратите внимание, что в примере, который я привел, выгоду получает бизнес, а не пользователь.

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

Вот почему я не верю, что JBehave поддерживает его, и не думаю, что он должен это делать.

person Lunivore    schedule 30.01.2012

Я думаю, что это то, что вы пытаетесь сделать.

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

В истории у меня будет что-то вроде

When I create a new customer <customer>
When I do some stuff

When I do some more customer stuff
|NAME    |VALUE     |
|custName|<CUSTNAME>|
|dob     |01/01/1970|

When I do some more stuff

Examples:
|<customer>|<BLAH1>|<BLAH2>|<CUSTNAME>|<BLAH4>|
|\$random  |para1  |para2  |\$name    |para4  |
|George    |para1  |para2  |Peter     |para4  |

В классе, где данные извлекаются из таблицы, я использую:

if (value.equalsIgnoreCase("$name") {
    this.value = getStoredData().getName();
} else {
    this.value = value;
}

Это мое личное соглашение, что я использую ‹> вокруг переменных в истории и $ для переменных, где код Java генерирует или вызывает значение переменной.

Если вы используете $ в таблице примеров, он должен быть экранирован, поэтому обратная косая черта

person Gazen Ganados    schedule 05.11.2013