【问题标题】:java cucumber, how to continue on failurejava黄瓜,如何在失败时继续
【发布时间】:2016-08-22 11:48:19
【问题描述】:

Java Spring Cucumber,我怎样才能继续场景,而不是在失败时停止。当我运行功能文件时,如果场景失败,则忽略所有其他场景,这不是所需的行为。 我不想使用assertionError,我想运行一个场景,如果它通过了我就记录为成功,否则记录为失败。

示例:我想测试一个不稳定的模块,我想运行 100 次测试,如果 99 次测试通过,那将满足我的要求。但是说第一个场景失败了,所以100个中有0个会通过,这对我不利

【问题讨论】:

  • 你确定接下来的测试是可靠的吗?我的意思是,当一些事情一开始就失败了。然后这个问题可能会在接下来的测试中传播。如果不是。那么你也许应该创建单独的场景? stackoverflow.com/questions/15298521/…
  • 我正在构建测试,以便测试许多场景,但我不希望我的测试在失败时被忽略,我希望它们继续失败,而不是忽略
  • 我不确定我是否正确理解了您的问题。通常情况下,当 1 个场景(1 个测试)失败时,其他场景仍然由 cucumber 执行。你说不是吗?或许给我们看一些你的代码?
  • 是的,代码没用,因为这是一个理论问题,我在问这种情况是否存在。但你说得对,如果测试失败,则其他测试运行,但它们的状态是“测试被忽略”。其他场景运行良好。我想让我的测试“通过”,即使 1 次测试失败了
  • 您说的是场景中的步骤吗?如果某个步骤失败,则跳过其余步骤。正如@SirLenz0rlot 指出的那样,一个场景失败对下一个场景没有影响。

标签: java spring cucumber


【解决方案1】:

简短回答:不。

我认为“测试”是指黄瓜所指的“步骤”。

当一个场景失败时,Cucumber 不会忽略其他场景,而是会停止当前场景。

无论如何我能想到,这正是你想要的。

作为场景指定通过您的软件的路径。如果您不再走这条路(一个失败的步骤),那么尝试沿着这条路走是没有意义的。

'General' 工具,例如 eclipses Junit runner 可能会使这看起来有点奇怪,通过将步骤显示为测试,因此将剩余步骤标记为跳过的测试。但是步骤!= 测试。

【讨论】:

    【解决方案2】:

    如果您想确保执行场景中的所有步骤,您将不得不使用类似于 junit 中的 ErrorCollector 类的东西。但这只会处理 AssertionError 其他任何问题,您将跳过步骤。

    这是通过 @Rules 注释实现的,不幸的是黄瓜跑步者无法识别。您将不得不手动实例化它并调用 verify 方法。使用 checkThat() 方法添加您想要完成的每个断言。在方案的最后一步调用 verify() 方法。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-11-19
      • 1970-01-01
      • 1970-01-01
      • 2021-03-20
      相关资源
      最近更新 更多