我想知道是否有人会知道如何做到这一点。
我的方案类似于以下代码段。在表格中,我希望在运行测试时可以替换参数。示例摘录:
...
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是否支持表中的这种参数化,我可以在代码中为代码定义一个值,并在运行时替换它。
我找不到涉及此的文档,所以我怀疑我必须手动完成。这真的没问题,但如果有更好的方法,那么我就会热衷于学习。
答案 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表中使用$,则必须对其进行转义,因此反斜杠