Получить все ошибки и неудачные тестовые примеры в MiniTest Использование SimpleCov в Rails Code - PullRequest
1 голос
/ 24 марта 2020

Я пытаюсь отправить всю ошибку неудачного тестового примера на электронную почту всякий раз, когда мой тест рейка (Minitest) не проходит, сейчас он показывает ошибку и неудачный тестовый случай в терминале.

У меня нет понять, как собирать информацию, связанную с failed test cases errors и failed cases, в какую-либо переменную rails, и отправлять эти ошибки в электронное письмо.

Я просто хочу, чтобы ошибка в моих рельсах программно получалась каждый раз, когда мои тестовые примеры терпят неудачу так же, как это показывает в терминале, когда я запускаю rake test.

Исследовал Simplecov Github тоже c, но ничего не нашел

Я использую эти 3 драгоценных камня для создания отчета о покрытии, включая само Minitest gem

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

https://github.com/colszowka/simplecov

Как этот случай отказа в терминале

Любая помощь будет принята с благодарностью.

enter image description here

1 Ответ

0 голосов
/ 25 марта 2020

Есть несколько способов добиться этого, я опишу один из способов. У большинства крупных тестирующих библиотек есть концепция нестандартных репортеров или хуков вокруг их жизненного цикла выполнения, вы бы хотели использовать их для запуска своей электронной почты в случае неудачного тестирования. В случае minitest вы должны следовать этим примерам из minitest do c.

Вы должны создать плагин 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

Если вы хотите узнать, что еще вы можете сделать, взгляните на некоторые из встроенных репортеров .

...