1

每当我的 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

就像终端中的这种失败案例

任何帮助将不胜感激。

在此处输入图像描述

4

1 回答 1

1

有多种方法可以实现这一点,我将描述其中一种方法。大多数大型测试库都有一个自定义报告器或围绕其执行生命周期的钩子的概念,您可能希望基本上使用它来触发您的电子邮件,以防测试失败。在 minitest 的情况下,您应该遵循minitest 文档中的这些示例

您应该创建一个 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

如果你想看看你还能做些什么,看看一些内置的记者

于 2020-03-24T21:18:52.907 回答