考虑以下几点:
@Given("^this stuff:$")
public void this_stuff(List<ScenarioStuff> stuffList) throws Throwable {
stuffList.get(0).isHappy();
}
其特点是:
Given this stuff:
|Name|
|Miguel|
最后,场景对象:
ScenarioStuff{
private String name;
private boolean happy;
(getters and setters for name and happy, inlcuding:)
public boolean isHappy(){
return happy;
}
以下是我的发现:
stufflist.get(0).ishappy();是假的;
即使 private boolean happy=true;
对于的默认构造函数,它仍为false ScenarioStuff(){ happy=true)
代码不会因该构造函数中的断点而中断。
问题:
如何默认 happy=true
如果在特征表中没有作为参数提供?
2条答案
按热度按时间pw9qyyiw1#
cucumber使用xstream将步骤定义参数转换为java对象,因此要回答这个问题,我们必须深入研究xstream的方法。
正如在回答xstream问题时所提到的,一个选项是使用readresolve方法(xstream显然使用这个方法来设置对象,如果可用的话)。
在我的特殊情况下,将happy变量从
boolean
至Boolean
,我最终实现了如下:我还了解到可以实现一个转换器来封送/解封送对象,但我没有探讨这个选项,因为1)它似乎不那么简单,2)我没有立即看到如何在cucumber设置中注册这个新转换器。
gkn4icbw2#
更新我添加了布尔值,让它们也工作。
步骤定义文件
}
类价格如下所示: