JBehave: параметры в таблице, такие как <TODAY> - PullRequest
0 голосов
/ 27 января 2012

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

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

...
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 этот тип параметризации в таблице, где я могу определить значение для и где-нибудь в коде и заменить его во время выполнения.

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

Ответы [ 2 ]

1 голос
/ 30 января 2012

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

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

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

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

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

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

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

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

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

0 голосов
/ 05 ноября 2013

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

В своих тестах я использую много случайных данных, например, для имен людей.Когда я генерирую случайное имя, я записываю его в класс 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 генерирует или вызывает кодзначение переменной.

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

...