【问题标题】:Why doesn't @Stepwise work across class boundaries when using inheritance in a Geb test using Spock?为什么在使用 Spock 的 Geb 测试中使用继承时,@Stepwise 不能跨类边界工作?
【发布时间】:2016-05-12 23:28:39
【问题描述】:

虽然它可能不是最好的方法,但使用继承来组成一套 Geb 测试(使用 Spock)是相当普遍的。

使用@Stepwise 对完成这项工作至关重要,但它似乎不能跨类边界工作,如下图所示:

我有一个破解解决方案来解决这个问题,但我真的很想知道这是预期的行为还是 Geb 或 Spock 应该调查的错误。

【问题讨论】:

  • 为什么使用@Stepwise 比构建可在多个测试中使用的可重用高级函数库更好?当然,执行一次可能会更慢,但我保证在使用 @Stepwise 时遇到导致整个套件停止的故障时会更快。
  • 我已经习惯于使用@Stepwise 来建立一系列中等/简短的测试层次结构,这些测试从用户创建/注册开始,并迅速触及问题的核心。我最近在Page(现在是Modules)中加入了越来越多的行为,并且非常喜欢它的形成方式。在我们解决数据设置问题之前,我们仍然会依赖继承来构建我的测试树。我正在研究关于最佳实践的详尽描述和问题。它可能会在下周初发布。

标签: inheritance functional-testing spock geb


【解决方案1】:

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

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

表示规范的特征方法应该在 他们声明的顺序(即使存在并行规范运行器), 总是从第一种方法开始。如果某个方法失败,则 其余方法将被跳过。 在 super- 中声明的特征方法 和子规格不受影响

http://spockframework.github.io/spock/javadoc/1.0/spock/lang/Stepwise.html

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-10-20
    相关资源
    最近更新 更多