Ruby Cucumber:后台失败,仍然存在,代码为0

Ruby Cucumber:后台失败,仍然存在,代码为0,ruby,cucumber,exit-code,scenarios,Ruby,Cucumber,Exit Code,Scenarios,我想知道的是,cucumber在后台失败时返回退出代码0(据我所知,这意味着“ok”) 现在失败的步骤不应该出现在背景中(我想最好是在“之前”的钩子中)。但是有人知道它返回这个退出代码的原理吗? 它是一个bug还是一个特性 附件: 一个更具体的例子: 假设此代码通过: Feature: Figuring out how Cucumber works As a developer I want to find out why cuccies fail, but my build doesn

我想知道的是,cucumber在后台失败时返回退出代码0(据我所知,这意味着“ok”)

现在失败的步骤不应该出现在背景中(我想最好是在“之前”的钩子中)。但是有人知道它返回这个退出代码的原理吗? 它是一个bug还是一个特性

附件: 一个更具体的例子: 假设此代码通过:

 Feature: Figuring out how Cucumber works

 As a developer
 I want to find out why cuccies fail, but my build doesnt
 In order to have more confidence in my build

 Background: logging in into the system
   Given I am logged in

 Scenario: creating a new test set
   When I do something
   Then I should see "you've done something"
它返回,退出代码为0。 让我们让它失败:

 Background: logging in into the system
   Given I am logged in

 Scenario: creating a new test set
   Then I should see "there's no way you see this"
   When I do something
   Then I should see "you've done something"
输出显示一个失败的步骤,并返回退出代码1 当我将失败的步骤移到后台时:

 Background: logging in into the system
   Given I am logged in
   Then I should see "there's no way you see this"

 Scenario: creating a new test set
   When I do something
   Then I should see "you've done something"

输出仍然显示它失败了,但返回时退出代码为0。后台与以前非常相似,唯一的区别是,它在之后运行。而且,由于您正在使用Background/Before(通常)为您的场景设置先决条件,因此如果测试过程失败(错误代码不同于0),这将没有多大帮助,因为您在先决条件中犯了错误


因此,我的猜测是,尽管我不能确定,这是一个“功能”,并且非常有意这样做。

我问过黄瓜人(他们的邮件列表),他们同意这是一个bug


但当先决条件失败时,场景甚至无法执行。因此,我希望测试过程失败(错误代码不是0)。因为考试没有失败。它“只是”没有被执行。返回值表示测试是否失败。谢谢,我想我的问题得到了回答,尽管我对设计决策(如果是设计决策)不满意:在我看来,没有执行的测试(特别是当要求执行时)比执行的测试(无论结果如何)更糟糕。我会在Cucumber邮件列表上询问,不知道投稿人会如何回应