неинициализированная константа Test :: Unit :: TestResult :: TestResultFailureSupport

Я получаю ошибку в subj, когда пытаюсь запустить спецификации или генераторы в новом проекте rails.

Это происходит, когда я добавляю в смесь «следует».

Я добавил в config / environment.rb следующее:

config.gem 'rspec', :version => '1.2.6', :lib => false
config.gem 'rspec-rails', :version => '1.2.6', :lib => false
config.gem "thoughtbot-shoulda", :version => "2.10.2", :lib => 'shoulda', :source => "http://gems.github.com"

Я использую OSX.

  • рубин 1.8.6 (11.08.2008, патч, уровень 287)
  • драгоценные камни 1.3.5
  • рельсы 2.3.4
  • rspec - 1.2.6
  • shoulda - 2.10.2
  • тест-модуль - 2.0.3

Я знаю this и действительно добавляю config.gem 'test-unit', :lib => 'test/unit' решает проблему генератора, поскольку он не генерирует исключение, но печатает 0 tests, 0 assertions, 0 failures, 0 errors, 0 pendings, 0 omissions, 0 notifications в конце запуска, поэтому я полагаю, что он пытается запустить тесты, которые являются неожиданными и нежелательными, а также спецификации перестают запускаться вообще, похоже, что rspec не работает вообще, при запуске rake spec я снова получаю выходные данные тестового модуля (с 0 тестами, так как есть только спецификации, тесты не определены)


person Vitaly Kushner    schedule 05.10.2009    source источник
comment
удаление гема test-unit помогло, но я не могу назвать это решением :(   -  person Vitaly Kushner    schedule 05.10.2009


Ответы (3)


Недавно я столкнулся с подобной проблемой и отследил ее до этого коммита в rubygems:

http://github.com/vvs/rubygems/commit/cbb6d8d7d7d7d7d7d7d7d7d7d7d7d7d7d7d7d7d7d7d7d7d8

Которая загружает гем 'test-unit', если он есть, или незаметно перемещается, если его нет. Автор этого изменения, возможно, не осознает фундаментальную истину - активация драгоценного камня часто может изменить поведение других драгоценных камней, загруженных в систему. Разработчики приложений должны отвечать за определение набора драгоценных камней, которые они хотят активировать; то, что сама система rubygems решает дополнительно загрузить драгоценный камень, ломает голову.

Другая половина этой проблемы - это вопрос, почему гем test-unit мешает rspec. На это я не могу ответить, но я отследил это до того факта, что не регистрируются группы ExampleGroups, что, в свою очередь, связано с тем, что «унаследованный» обратный вызов в ExampleGroupMethods не вызывается, когда Rspec динамически создает новый подкласс ActiveSupport: : TestCase (это происходит в подклассе ExampleGroupMethods #)

person user341555    schedule 14.05.2010
comment
Итак, если подумать, неясно, говорю ли я об той же проблеме или о другой. Проблема, о которой я говорю, возникает только тогда, когда я использую geminstaller, для которого требуется часть rubygems ('rubygems / validator'), которая затем пытается потребовать тестовый модуль, но молча продолжает, если драгоценный камень недоступен. Не похоже, что вы используете geminstaller, поэтому мне не ясно, что это rubygems, которые тянут тестовый модуль. - person user341555; 15.05.2010
comment
тоже не уверен, и я больше не сталкиваюсь с этой проблемой, но все равно буду награждать вас баллами за усилия :) У меня не хватило терпения, чтобы все это отследить. - person Vitaly Kushner; 15.05.2010
comment
Я думаю, это связано ... когда я удаляю тестовый модуль, эта проблема исчезает. Я не использую geminstaller. Проблема в том, что я хочу запустить ci-сервер, на котором некоторые проекты используют test-unit, а другие - rspec, поэтому это особенно расстраивает :( - person Tom Lianza; 09.11.2010

Основываясь на разговоре, я нашел здесь , похоже, проблема не в том, что RSpec умирает со всеми версиями тестового модуля, а в том, что он несовместим с более новыми. Таким образом, полное удаление тестового модуля - одно из возможных решений. Но, если это не вариант для вас (как это не для меня), вы можете установить более старую версию (например, 1.2.3) и просто убедиться, что она загружена до того, как загрузится rspec.

Например, у меня есть это в моем файле environment / test.rb, и тесты снова запускаются:

config.gem 'test-unit'  , :lib => 'test/unit',  :version => '<2.0'
config.gem "rspec",       :lib => false, :version => '<2.0'
config.gem "rspec-rails", :lib => false, :version => '<2.0'
person Tom Lianza    schedule 28.11.2010

test-unit на самом деле встроен в Ruby, поэтому удаление гема выполняется во встроенной версии Ruby. Если вам не нужно что-то особенное, что не входит в стандартный тестовый модуль, я бы не стал слишком об этом беспокоиться.

person Peter Wagenet    schedule 05.10.2009
comment
да, но если просто установить тестовый модуль (это была зависимость от чего-то), то где-то есть проблема. на данный момент я только что удалил гем тестового модуля, но, возможно, мне придется вернуть его снова. - person Vitaly Kushner; 07.10.2009
comment
Достаточно верно. Я видел ту же проблему раньше, поэтому надеюсь, что кто-то другой сможет пролить свет на нее. - person Peter Wagenet; 08.10.2009