JBehave:表中的参数,例如<today> </today>

时间:2012-01-27 02:11:31

标签: java testing bdd 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是否支持表中的这种参数化,我可以在代码中为代码定义一个值,并在运行时替换它。

我找不到涉及此的文档,所以我怀疑我必须手动完成。这真的没问题,但如果有更好的方法,那么我就会热衷于学习。

2 个答案:

答案 0 :(得分:1)

我暂时没有玩过JBehave(自2.X以来),但它当时不支持它,我认为它现在不太可能支持它。

您在这里所做的是制作适用于所有示例的方案。这不是一个真实的场景 - 它是以场景形式编写的验收标准。如果你这样做,你会错过使用具体例子的其他好处,特别是在他们激发想象力的方式,调出有趣的行为并允许有用的问题和与业务利益相关者的对话。

在这种情况下,如果产品是关于此场景结果的最有趣的事情,那么最好做的是单独调用它,例如

  

然后引号应包含Vanilla Option产品。

更强大的是找出结果对 有用的人,并提及它有用的方式,例如:

  

然后,用户应通过电子邮件收到报价,以诱使他们购买香草期权。

请注意,在示例中,我已经给出了实际上受益的业务,并且它并没有真正为用户完成。

通过在更高的抽象级别上执行这些步骤,您会发现更容易向用户/利益相关者调出结果的价值,这将有助于您获得更好的对话。对话,自动化,是BDD的核心。

这就是为什么我不相信JBehave支持它,也不认为它应该。

答案 1 :(得分:0)

我认为这就是你要做的事。

我在测试中使用了大量随机数据,例如,人们的名字。当我生成随机名称时,我将其写入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;
}

我使用&lt;&gt;这是我个人的惯例。围绕故事中的变量和$表示Java代码生成或调用变量值的变量。

如果在Examples表中使用$,则必须对其进行转义,因此反斜杠