【问题标题】:How to stop execution of a Cucumber feature if any of the scenarios had failed如果任何场景失败,如何停止执行 Cucumber 功能
【发布时间】:2016-07-07 13:41:47
【问题描述】:

如果我在功能文件中有 10 个场景,并且如果一个场景失败,那么我想停止执行或继续下一个场景。我想终止该特定功能文件的执行。我如何在 Java 中做到这一点?

【问题讨论】:

  • 出于好奇,您为什么要这样做.. 场景之间是否存在依赖关系??
  • 是的,确实有依赖关系。
  • 理想的情况是在场景之间没有任何依赖关系。所以如果一个场景失败,我们知道在哪里寻找以及哪个场景失败了。最大的优势是我们可以并行执行测试!!
  • Cucumber 并非旨在支持它们之间存在依赖关系的场景。

标签: java cucumber cucumber-jvm cucumber-junit cucumber-java


【解决方案1】:

我注意到该问题带有 Java 标记。 我没有测试下面的答案。它只是基于假设..

好吧,我们需要根据需求调整代码.. - 我们在 Cucumber 中有 @Before@After 来满足这个要求。

如果我是你,我会这样做……

@Before 中,我会检查(如果有的话)场景是否失败。如果失败,那么我将终止当前测试的线程并更新结果。

@After中,我会在测试执行后更新场景状态并更新结果json。

因此,在每次迭代(对于每个场景)中,首先将调用 @Before,其中逻辑将查找在当前场景之前执行的场景。

另外,不用说,我同意在这个问题上添加的 cmets。所有场景都应该是独立的。 (但就要求而言,允许调整;))

Expert Tips 提到的确实为黄瓜的质量及其用途增加了价值。希望这可以帮助。

祝你好运...!!

【讨论】:

  • Cucumber-JVM 没有 BeforeScenario/AfterScenario 钩子
  • 谢谢@Seb,应该是黄瓜包cucumber.annotation.After/Before中的@Before@After
【解决方案2】:

尝试在“RunCukesTest”类中​​使用@BeforeClass 和@AfterClass。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-10-18
    • 1970-01-01
    • 2017-08-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多