Minitest #setup и #teardown не вызываются при запуске теста через Rake

У меня есть пакет MiniTest. Я использую базовые Minitest::Unit::TestCase, а не спецификации. У меня есть методы setup и teardown, определенные в моем подклассе TestCase. Они отлично работают, когда я запускаю тестовый файл так: ruby test/whatever_test.rb. Но когда я запускаю rake test, setup и teardown не вызываются. Соответствующая часть моего Rakefile:

require 'rake/testtask'

Rake::TestTask.new do |t|
  t.test_files = FileList['test/*_test.rb']
  t.verbose = true
end

Почему бы setup и teardown не запуститься, когда используется Rake::TestTask?

Я бы вставил сюда код теста, но его довольно много. Я обязательно вставлю какую-то его часть, если вы хотели бы увидеть какой-то конкретный раздел.

Я запускаю Minitest 4.3.2 на Ruby 1.9.3-p194.


person rlkw1024    schedule 30.11.2012    source источник
comment
Не могли бы вы опубликовать минимальный нерабочий тест?   -  person tadman    schedule 30.11.2012


Ответы (2)


Проблема заключалась в том, что другой тестовый пример перезаписывал методы setup и teardown. Я случайно дал двум тестам одно и то же имя класса, поэтому произошла перезапись. Естественно, этой ошибки не было, когда я запускал один тестовый пример, что объясняет разницу в поведении при использовании Rake.

person rlkw1024    schedule 30.11.2012
comment
Была аналогичная проблема в системных тестах Rails 5 (в которых используется минитест). Метод установки для системного теста не выполнялся, когда мы запускали все наши системные тесты, но он выполнялся, когда мы запускали только этот системный тестовый файл. Наше исправление заключалось в простом переименовании тестового файла системы во что-то другое, и это исправило происходящее переопределение. Спасибо! - person Neil; 30.01.2018

В моем случае я писал тесты для связи через сокеты и добавил вспомогательный метод с именем send. Поскольку MiniTest использует send внутри для вызова методов разрыва, вместо этого он вызывал мой собственный send вместо отправки метода.

person Phrogz    schedule 01.08.2015