0

我想知道是否有人会知道如何做到这一点。

我有一个类似于以下片段的场景。在表中,我希望有可以在运行测试时替换的参数。示例片段:

...
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 是否支持在表中进行这种参数化,我可以在其中为代码中的某处定义一个值,并在运行时替换它。

我没有找到与此相关的文档,所以我怀疑我必须手动完成。这真的没问题,但如果有更好的方法来做到这一点,那么我会热衷于学习。

4

2 回答 2

1

我有一段时间没有玩过 JBehave(从 2.X 开始),但当时它不支持它,我认为它现在不太可能支持它。

您在这里所做的是制作一个适用于所有示例的场景。这不是一个真正的场景——它是接受标准,以场景形式编写。如果这样做,您将错过使用具体示例的其他好处,特别是在激发想象力、唤起有趣行为以及允许与业务利益相关者进行有用的问题和对话的方式方面。

在这种情况下,如果产品是这个场景的结果中最有趣的东西,那么更好的做法是单独调用它,例如

然后报价应包含 Vanilla Option 产品。

更强大的是找出结果对谁有用并提及它以何种方式有用,例如

然后用户应该通过电子邮件收到报价,以诱使他们购买 Vanilla Option。

请注意,在我给出的示例中,实际上受益的是业务,而并不是真正为用户完成的。

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

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

于 2012-01-30T09:30:43.943 回答
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;
}

这是我自己的个人约定,我在故事中的变量周围使用 <> 并在 Java 代码生成或调用变量值的变量处使用 $。

如果您在示例表中使用 $ 它必须被转义,因此反斜杠

于 2013-11-05T11:43:48.937 回答