【问题标题】:How to mark Cucumber JUnit step as failed but continue如何将 Cucumber JUnit 步骤标记为失败但继续
【发布时间】:2018-01-31 13:04:56
【问题描述】:

我正在尝试在我的 selenium 项目中使用 Cucumber 实现一种软断言。

基本上,我使用 JUnit Eclipse 插件将脚本作为 JUnit 测试运行,我想知道是否有任何方法可以在一个步骤上执行多个断言,如果任何断言失败,我想将该步骤标记为失败,但在不中断执行的情况下继续执行场景中的其他步骤/断言。

通过标记失败的步骤,我的意思是标记失败并添加到 JUnit 中的 FAILED 计数器,用于每个失败的断言,无论它发生在哪里。

我注意到如果我使用

捕获断言错误
try { 
    AssertTrue(someCondition.isTrue()); 
} catch (AssertionError ae) { 
    log.info(some message); 
}

该步骤在 JUnit 插件中将被标记为 PASSED,失败的计数器保持为 0。

什么触发了计数器以及如何手动标记 JUnit 失败而不引发 AssertionError?

或者,我是否可以将 Cucumber 选项添加到 Runner 中以不停止失败测试?我希望至少在黄瓜报告中有预期和实际结果的失败。

【问题讨论】:

标签: java selenium junit cucumber


【解决方案1】:

你的意思是:我可以有多个断言,每个断言都会执行吗?

是的,您可以,但是您必须为每个断言编写一个测试,例如使用示例表或 Cucumber 提供的背景设置。通常,您会希望您的场景只测试单一事物。

【讨论】:

  • 我希望避免为每个断言编写测试,但感谢您的建议。我真正想要的是一种告诉 JUnit 插件标记失败的方法,以便我可以在同一个测试中标记多个失败。
  • 重点是,JUnit(和其他测试框架)构建为在失败后停止,因为它会在所有其他断言上产生不确定性,考虑到应用程序的行为不符合预期。
【解决方案2】:

断言肯定会停止测试,如果你知道你的代码会失败,你可以使用 AsserFailed 并尝试它,否则你可以在不使用 JUnit 断言的情况下使用 if 语句并验证步骤

【讨论】:

  • 是的,我知道可能会失败,但我需要 JUnit 来获取 Cucumber 报告。
【解决方案3】:

这可能会迟到,但您可以使用 TestNG 或 AssertJ 库进行断言 已经实现了软断言

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-08-16
    • 2015-11-21
    • 2012-06-03
    • 1970-01-01
    • 2014-11-05
    相关资源
    最近更新 更多