在 Rails 代码中使用 SimpleCov 在 MiniTest 中获取所有错误和失败的测试用例

Get all error and failed test case in MiniTest Using SimpleCov in Rails Code

每当我的 rake 测试(Minitest)失败时,我试图将所有失败的测试用例错误发送到电子邮件, 现在它在终端中显示错误和失败的测试用例。

我不知道如何在某些 rails 变量中捕获那些 failed test cases errorsfailed cases 相关信息,并在电子邮件中发送这些错误。

我只想在每次测试用例失败时以编程方式在我的 rails 中获取错误,就像我 运行 rake test 时在终端中显示的那样。

也探索了 Simplecov Github 文档,但没有找到任何东西

我正在使用这 3 个 gem 来生成包括 Minitest gem 在内的覆盖率报告

group :test do
 gem 'simplecov'
 gem 'simplecov-cobertura'
 gem 'minitest'
end

https://github.com/colszowka/simplecov

Like this failure case in terminal

如有任何帮助,我们将不胜感激。

有多种方法可以实现这一点,我将介绍其中一种方法。大多数大型测试库都有自定义报告器的概念或围绕其执行生命周期的挂钩,您可能希望在测试失败时使用它来触发您的电子邮件。如果是 minitest,您应该遵循 minitest 文档中的 these examples

您应该创建一个 minitest 插件,并让 minitest 插件加载一个自定义报告程序,该报告程序跟踪失败并在测试套件完成后通过电子邮件发送。您的自定义记者可能看起来像

# minitest/email_reporter_plugin.rb

module Minitest
  class CustomEmailReporter < AbstractReporter
    attr_accessor :failures

    def initialize options
      self.failures = []
    end

    def record result
      self.failures << result if !(result.passed? || result.skipped?)
    end

    def report
      if !self.failures.empty?
          MyAwesomeEmailService.send_email(prepare_email_content)
      end
    end

    def prepare_email_content
       # Use the data in self.failures to prepare an email here and return it
    end
  end

  # code from above...
end

如果您想了解您还能做些什么,请查看一些 inbuilt reporters