Cucumber 如何让黄瓜方案失败

Cucumber 如何让黄瓜方案失败,cucumber,cucumber-jvm,Cucumber,Cucumber Jvm,在我的场景中,我需要验证一个页面中是否存在10个对象 如果任何对象不存在,则该步骤应失败,最终该场景也应报告为失败,但脚本执行应继续验证剩余对象是否存在 我知道scenario.getStatus()如果场景失败,我会给出提示,但是我如何将场景的状态设置为失败?重要的是,脚本执行应该在之后继续。在步骤失败后继续执行步骤不是一个好主意,因为步骤失败可能会使世界保持不变的冲突。更好的策略是增加场景的粒度。不要用几个“Then”语句编写一个场景,而是使用一系列示例分别测试每个后置条件。有时,场景大纲和

在我的场景中,我需要验证一个页面中是否存在10个对象

如果任何对象不存在,则该步骤应失败,最终该场景也应报告为失败,但脚本执行应继续验证剩余对象是否存在


我知道
scenario.getStatus()
如果场景失败,我会给出提示,但是我如何将场景的状态设置为失败?重要的是,脚本执行应该在之后继续。

在步骤失败后继续执行步骤不是一个好主意,因为步骤失败可能会使世界保持不变的冲突。更好的策略是增加场景的粒度。不要用几个“Then”语句编写一个场景,而是使用一系列示例分别测试每个后置条件。有时,场景大纲和示例列表可以合并类似的故事

有一些讨论是关于添加一个特性来标记某些步骤,以便在失败后继续


这里还有一些其他方法可以在发生故障后继续执行场景步骤:

根据您使用的junit或testng测试框架,您可以使用软断言的概念。基本上,它将收集所有错误,如果出现问题,则抛出断言错误

要使场景失败,您只需要一个断言就可以失败,无需设置场景的状态。如果断言失败,Cucumber将处理该问题

对于测试,您可以使用SoftAssert类-您将获得大量的相关教程。调用
doAssert
将触发对所有存储断言的验证

对于junit,可以使用ErrorCollector规则类- 由于cucumber不支持@Rule annotation,您需要从此类继承并重写verify属性,以将其修饰符改为public而不是protected。创建新类的实例并添加断言。调用
verify
方法将启动验证。

提供断言和验证概念,其中断言失败场景以失败状态退出,验证场景继续下一步,如果一个或多个验证失败,步骤/场景的最终状态为失败


您还可以使用导致测试失败的设置步骤状态失败。使用步骤侦听器,您还可以通过将异常转换为验证失败来继续执行步骤失败

这可能是正确的,但缺少整体方法。原因是,假设在一个场景步骤中,如果我想验证该部分中存在的所有对象,那么场景大纲就没有帮助了。我们有没有办法单独使用Cucumber而不是QAF来实现这一点?您可以使用Cucumber 5+在报告中仍然显示绿色的失败的特定步骤。我需要滚动到最后查看故障,而不是在步骤本身报告的故障。@SakshiSingla理想情况下,在进行验证的场景中应该只有一个故障。这种情况也在过去吗?