Ruby 在第一次失败时停止执行特定的rspec测试(不是测试套件)

Ruby 在第一次失败时停止执行特定的rspec测试(不是测试套件),ruby,testing,rspec,Ruby,Testing,Rspec,在第一次失败时,是否有一些编程方法强制rspec测试停止 比如说, 我有一个带有两个rspec测试的测试套件,我一次运行了它们 每个rspec测试都位于单独的spec.rb文件中 如果这些测试中的任何一个出现了故障,我想在失败的特定测试步骤上进一步停止特定测试的执行,但不停止我正在运行的整个测试套件的执行 我知道有以下方法: RSpec.configure do |c| c.fail_fast = true end 但在我在测试套件中运行的任何规范文件中定义它都会导致套件的所有执行失败 有

在第一次失败时,是否有一些编程方法强制rspec测试停止

比如说,

  • 我有一个带有两个rspec测试的测试套件,我一次运行了它们
  • 每个rspec测试都位于单独的spec.rb文件中
  • 如果这些测试中的任何一个出现了故障,我想在失败的特定测试步骤上进一步停止特定测试的执行,但不停止我正在运行的整个测试套件的执行

    我知道有以下方法:

    RSpec.configure do |c|
      c.fail_fast = true
    end
    
    但在我在测试套件中运行的任何规范文件中定义它都会导致套件的所有执行失败

    有什么办法可以处理这个案子吗


    提前感谢

    我知道这是一个老问题,但我在自己尝试实现同样的行为时偶然发现了它。在进行了大量徒劳的搜索之后,我想出了一个相当简单的实现方法,它实际上提供了所需的行为

    只需在每个等级库文件中添加以下内容,即可在发生异常时跳过后续示例(在该特定文件中):

      before :all do
        $continue = true
      end
    
      around :each do |example|
        if $continue
          $continue = false
          example.run
          $continue = true unless example.exception
        else
          example.skip
        end
      end
    

    这里的逻辑应该是不言自明的。继续运行示例,直到出现异常,然后跳过该规范的其余示例。每个钩子周围的钩子很好地促进了该逻辑,因为它可以控制每个示例的执行。有关“环绕”钩子的更多信息,请参阅。

    要准确理解您想要的内容有点困难,但您的意思是,如果出现故障,在继续运行套件中的其他测试的同时,是否可以停止在特定文件中运行的所有测试?如果是这样,我不确定这是否可能。如果您的意思是,可以运行整个测试套件,但立即显示任何失败消息,以便您可以在其他测试仍在运行时对其进行调查,那么请尝试。我的测试套件2中有5个规范测试。每个测试都在单独的规范文件3中。每个测试都包含一些上下文,在这些上下文中进行一些验证。4.我运行命令rspec。运行完整的测试套件5。当某个测试(一个文件)中的某个上下文中出现故障时,我希望停止在该特定上下文中执行,而不是在该测试中进一步执行,而是执行其他spec文件。有可能做到吗?