在 Rails 代码中使用 SimpleCov 在 MiniTest 中获取所有错误和失败的测试用例
Get all error and failed test case in MiniTest Using SimpleCov in Rails Code
每当我的 rake 测试(Minitest)失败时,我试图将所有失败的测试用例错误发送到电子邮件,
现在它在终端中显示错误和失败的测试用例。
我不知道如何在某些 rails 变量中捕获那些 failed test cases errors
和 failed cases
相关信息,并在电子邮件中发送这些错误。
我只想在每次测试用例失败时以编程方式在我的 rails 中获取错误,就像我 运行 rake test
时在终端中显示的那样。
也探索了 Simplecov Github 文档,但没有找到任何东西
我正在使用这 3 个 gem 来生成包括 Minitest gem 在内的覆盖率报告
group :test do
gem 'simplecov'
gem 'simplecov-cobertura'
gem 'minitest'
end
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。
每当我的 rake 测试(Minitest)失败时,我试图将所有失败的测试用例错误发送到电子邮件, 现在它在终端中显示错误和失败的测试用例。
我不知道如何在某些 rails 变量中捕获那些 failed test cases errors
和 failed cases
相关信息,并在电子邮件中发送这些错误。
我只想在每次测试用例失败时以编程方式在我的 rails 中获取错误,就像我 运行 rake test
时在终端中显示的那样。
也探索了 Simplecov Github 文档,但没有找到任何东西
我正在使用这 3 个 gem 来生成包括 Minitest gem 在内的覆盖率报告
group :test do
gem 'simplecov'
gem 'simplecov-cobertura'
gem 'minitest'
end
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。