我已经开始使用JBehave开发BDD项目了。我需要根据“Given”,“When”步骤构建一系列要调用的方法,最后在“Then”中执行它们。样本就像
鉴于用户登录为高级用户
当他将物品添加到购物车时
然后他获得特别折扣
对于上面的场景,我必须根据“Given”/“When”构建方法调用序列,然后在“Then”中执行相同的
E.g。
List<Executable> sequenceList
@Given
public void execGiven()
{
A a = new A();
a.call1()
a.call2()
B b = new B();
b.call3();
}
@When
public void execWhen(){
C c = new C();
c.call4();
//...few more methods
@Then
public void execThen(){
//Add some methods to the list of executables
D d = new D();
d.call5();
Assert if everything successful
}
我面临的问题是我们正在使用的框架(在构建和使用中)不能用于在故事的每个步骤中部分执行方法调用序列。相反,我必须将它们作为整个序列执行(从a.call1到d.call5)。另外一个问题是我不想对每一步的方法调用进行硬编码,而是在运行时根据某些配置调用它们。 p>
我的方法。 不是在每个步骤中运行这些方法(a.call1,a.call2),而是将它们添加到方法列表中并使用反射在“Then”中执行它们。也可以使用注释,如
@Sequence(step="Login" , sequenceId=1) for each method so that at runtime I can build a list of calls to be made.
考虑到方法调用序列中的任何更改都不太容易改变,这将是一个好方法。我心里想的方法很少
使用注释连接序列
使用xml连接序列
使用文本文件提及序列(几乎与上面相同)
有没有更好的方法在运行时构建图并执行序列?还有任何缺点吗?
谢谢