Inheritance 为什么';在使用Spock的Geb测试中使用继承时,t@逐步跨类边界工作?

Inheritance 为什么';在使用Spock的Geb测试中使用继承时,t@逐步跨类边界工作?,inheritance,functional-testing,spock,geb,Inheritance,Functional Testing,Spock,Geb,虽然这可能不是最好的方法,但使用继承来编写一套Geb测试(使用Spock)是相当常见的 逐步使用@Stepwise对于实现这一点至关重要,但它似乎无法跨越类边界,如下图所示: 我有一个黑客解决方案来解决这个问题,但我真的很想知道这是预期行为还是Geb或Spock应该研究的bug。逐步注释只适用于单个规范。它从来没有打算跨类或跨层次(Spock邮件列表中的一个流行请求) 官方Javadoc(我的重点)中这样说: 指示应在中顺序运行等级库的要素方法 他们声明的顺序(即使在平行规范运行者在场的情况下

虽然这可能不是最好的方法,但使用继承来编写一套Geb测试(使用Spock)是相当常见的

逐步使用
@Stepwise
对于实现这一点至关重要,但它似乎无法跨越类边界,如下图所示:


我有一个黑客解决方案来解决这个问题,但我真的很想知道这是预期行为还是Geb或Spock应该研究的bug。

逐步注释只适用于单个规范。它从来没有打算跨类或跨层次(Spock邮件列表中的一个流行请求)

官方Javadoc(我的重点)中这样说:

指示应在中顺序运行等级库的要素方法 他们声明的顺序(即使在平行规范运行者在场的情况下), 总是从第一种方法开始。如果方法失败,则 将跳过其余的方法在super中声明的特征方法- 和子服务器不受影响


回答您最初的问题:这是预期行为

为什么使用
@逐步
比构建可在多个测试中使用的可重用高级函数库更好?当然执行一次可能会比较慢,但我保证,当使用
@Stepwise
时,如果出现停止整个套件的故障,速度会更快。我已经习惯于使用
@Stepwise
来建立一个中等/短层次的测试集合,这些测试从用户创建/注册开始,并迅速触及问题的核心。我最近在
页面
(现在是
模块
s)中加入了越来越多的行为,我非常喜欢它的发展。在解决数据设置问题之前,我们仍将依赖继承来构建测试树。我正在对最佳实践进行全面的描述和提问。它可能会在下周早些时候发布。