【问题标题】:How do I make JBehave ignore failed scenarios?如何让 JBehave 忽略失败的场景?
【发布时间】:2012-08-30 08:09:18
【问题描述】:
Scenario A:
Step A - PENDING
Step B - PENDING

Scenario B:
Step C - Implemented
Step D - Implemented

运行故事时,步骤 C 和 D 设置为未执行。即使方案 A 由于未决步骤而失败,我如何让它们运行?

我尝试将 PendingStepStrategy 设置为 PassingUponPendingStep(和 FailingUponPendingStep),但没有任何区别。

【问题讨论】:

    标签: jbehave


    【解决方案1】:

    JBehave 可以配置为跟踪场景之间的状态。我相信这样做的原因是考虑到您何时希望拥有彼此相关的场景。

    如果您检查您使用的配置,那么您应该能够查看您是否在 StoryControls 集上有某个参数。

    例如

    Configuration configuration = new MostUsefulConfiguration()
        .useStoryControls(new StoryControls().doResetStateBeforeScenario(false))
    ...
    

    如果你有上面的设置,它不会执行其他场景,因为失败状态被保留

    您可以在配置中使用 JBehaves MostUsefulConfiguration 类而无需额外配置,因为 doResetStateBeforeScenario 默认设置为 true。

    【讨论】:

    • 啊,那是票。干杯。
    • 只是补充一下,对于使用 Serenity 和 JBehave 和 Maven 故障安全插件的任何人,如果您有一个工作流要求在失败时跳过他们后续的 JBehave 场景:您可以添加 combine Lea 的答案这样做:SerenityStories.configuration().storyControls().doSkipScenariosAfterFailure(true);SerenityStories.configuration().storyControls().doResetStateBeforeScenario(false);。非常感谢您的回答,Lea!
    【解决方案2】:

    这些步骤无论如何都应该运行。我认为您在声明场景的那一行可能有错误,而 JBehave 认为这四个步骤属于同一场景。

    场景用记号Scenario:分隔,例如

    Scenario: Use a pattern variant
    When the item cost is 10.0
    When the price is 10.0
    When the cost is 10.0
    
    
    Scenario: Use a aliases variant
    Then the item price is 10.0
    Then the item price becomes 10.0
    Then the item price equals to 10.0
    

    即使第一个场景中的任何步骤失败,第二个场景也会运行。

    【讨论】:

    • 我有那个布局。首先是Story: 令牌,然后是故事情节。然后,对于每个场景,我都有 Scenario: 标记,其标题后跟时间和时间。不同的场景显示在生成的 HTML 结果页面上。所以我做对了。
    • 抱歉,我从未见过 JBehave 这样做,除非故事有误。
    • 好的。我会调查这些故事,看看是否有愚蠢的错误。当我解决问题时,我会更新这个。谢谢。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-11-21
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多