运行 只有第一种情况在 JBehave 中通过时第二种情况

Run the second scenario only if the first one passes in JBehave

我将 JBehave 与 selenium 和 serenity 结合使用,我有 3 个场景。我想 运行 一个一个的场景。如果第一个场景通过,那么 运行 第二个场景。如果场景二通过,那么 运行 第三个场景。如果场景一失败,那么它不应该 运行 任何其他场景。我该如何实现?

您可能会使用妥协的异常,但 JBehave(和一般的 BDD 场景)实际上不打算以这种方式使用 - 每个场景都应该是独立的。

您的场景应该相互独立,并且是一个 objective 在一种情况下的完整表现。在 BDD 中将场景链接在一起是一种反模式,应该避免。

下一个问题是为什么要对功能测试应用快速失败策略。这需要重新考虑以确定这是否适合您的情况。虽然快速失败是部署管道的标准,但它通常不是自动化功能测试的好方法,尤其是在使用 BDD 进行功能驱动开发期间。为自动化功能测试寻求故障安全策略通常是一种更好的方法。我建议您 运行 完成所有测试。这通常会提供更多价值。它将避免早期失败的测试掩盖潜在更严重的失败测试或针对更重要或有价值的功能的测试。全面的检测报告让整改工作有优先级。

如果所有三种场景的失败触发器是共同的,则使用共同的前置条件步骤。例如Given the customer is authorised。然后用那个前提条件简单地保护每个场景。

如果故障的触发因素是环境因素,那么在您的 运行ner 中使用 bell weather 测试或使用适当的 @Before 测试挂钩。例如LDAP 或数据库可用。然后使用每个功能或场景测试此假设。

如果其中 none 个适用,您将需要使用您正在使用的场景的一些示例来详细说明您的要求。