Каковы основные преимущества rspec перед test :: unit, если таковые имеются? - PullRequest
3 голосов
/ 02 сентября 2011

Кажется, что все используют rspec в наши дни, но rails все еще поставляется в комплекте с test :: unit по умолчанию.

Есть ли у rspec какие-либо существенные преимущества перед тестовым модулем? Трудно получить точную информацию по этому вопросу ...

Ответы [ 3 ]

5 голосов
/ 02 сентября 2011

В этих обсуждениях обычно много внимания уделяется синтаксису, который, безусловно, субъективен, но RSpec предлагает некоторые полезные функции, которых нет в тестовом / модульном, мини-тесте или их библиотеках расширений. Три больших для меня:

  1. читаемый вывод (TURN помогает с этим, но в нем нет таких вещей, как распечатка команды, которую нужно скопировать для запуска отдельного примера, который не удался).

  2. разумный CTRL-C. В rspec-2, когда вы нажимаете CTRL-C, пример, запущенный в этот момент, заканчивается (вы можете нажать CTRL-C во 2-й раз, чтобы немедленно остановить его), и все это после запуска ловушек, и вы получаете то же самое выходной отчет, который вы получили бы в противном случае. Сколько раз вы видели F среди первых 50 или около того точек, и вам не дали никаких указаний на то, какие тесты на самом деле провалились. С rspec-2 этого не происходит.

  3. метаданные, связанные с каждым примером и группой. RSpec использует это для поддержки выбора примеров для запуска на основе различных критериев (местоположение, имена, версии ruby, теги командной строки и т. Д.), А также для включения / расширения модулей на их основе.

Это еще не все, но это только для того, чтобы дать вам представление. Конечно, я пристрастен, так что возьмите мои рекомендации с крошкой соли.

FWIW, David

1 голос
/ 14 января 2012

рельсы по-прежнему поставляются в комплекте с test :: unit по умолчанию.

Возможно, потому что

DHH обидел RSpec, говорит Test :: Unit IsПросто отлично

0 голосов
/ 02 сентября 2011

Я думаю, что это в основном субъективно. Я предпочитаю более традиционное тестирование, основанное на assert, а не на утверждениях rspec, поэтому я придерживаюсь Test::Unit. Одна из областей, в которой я считаю rspec более мощной, - встроенная функция создания заглушек (для этого нужно использовать дополнительные библиотеки Test::Unit).

...