Есть ли консенсус о тестовых каркасах для Ruby 1.9.x? [закрыто

StackOverflow https://stackoverflow.com/questions/1195327

  •  19-09-2019
  •  | 
  •  

Вопрос

Двух партий с быстрым вступлением. Intro: Я приезжаю в Ruby из Perl, и я немного потерян среди выбора тестовых рамок. Я понимаю, что, вероятно, нет единого, многоборного Лучший Выбор, но я даже не могу получить четкую картину игрового поля.

Итак, во -первых, Minitest или Test :: Unit? Я только что понял, что 1.9.1 по умолчанию сейчас миниции. Я не заметил, так как все старые учебные пособия по тесту :: UNIT по -прежнему работают нормально. если ты require test/unit, вы на самом деле получаете Minitest в качестве теста :: Эмулятор блока (!). Моя первоначальная мысль заключалась в том, чтобы пойти с выбором по умолчанию Minitest (как только я узнал, что это было там), но даже недавние книги, похоже, не заинтересованы в его обучении. Рубинские лучшие практики говорит «существуют значительные различия» между ними, но он решает не иметь сдачи с ними. Он также запускает все свои тесты с помощью Test :: Unit (плюс несколько пользовательских дополнений). Новая пикаса также очень мало в Minitest как таковой, и в главе о тестировании они также используют версию эмуляции Test :: Unit Emulation. Чтобы уточнить мой первый вопрос тогда: Minitest - это плохой первый вариант? Должен ли я по умолчанию использовать эмулятор Test :: Unit?

Во-вторых, помимо встроенных вариантов, есть RSPEC, Cucumber & Company для тестов, ориентированных на поведение. Сообщество сильно наклоняется к этому стилю и этой структуре? Должен ли я просто начать с RSPEC?

Я немного поиграю со всеми тремя, но мне любопытно услышать, какой консенсус (если таковой имеется) формируется вокруг тестирования в Ruby 1.9.

(Быстрое продолжение, как напоминание для себя и для всех, кто заинтересован. Смотрите. эта ссылка Для полезного обзора различных вызовов для Test :: Unit и Minitest в различных рубинах с 1,8 до 1.9.1.)

Это было полезно?

Решение

Есть консенсус? Я бы не сказал. Есть сильный общественный голос для использования TDD/BDD, но даже тогда он не универсален. Структура, вероятно, менее важна, чем применение практики в первую очередь.

Я считаю, что Minitest - это замена 1.9 для Test :: Unit, которая существует только как обертка вокруг новой библиотеки для обратной совместимости. Я предполагаю, что выбрать маршрут для конкретного министров будет более дальновидным.

RSPEC-это несколько иной дубль: менее очевидно, что «традиционные» фреймворки под влиянием XUNIT. Стоит провести некоторое время, чтобы увидеть, предпочитаете ли вы это.

Есть также Должен. Анкет Хотя я не знаю, как это тестировано на 1.9: это скорее обертка/расширение для Test :: Unit, так что, вероятно, сработает.

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

Во всех случаях я бы сказал, что любая структура, для которой вы можете найти доказательства регулярных обновлений, открытое, населенное сообщество и API, который вы не ненавидите, будут выполнять эту работу. Маловероятно, что вас позже застрелили за то, что вы сделали любой выбор, который вы делаете.

Другие советы

Я использую RSPEC в течение года или около того. Я перешел с Test :: Unit специально потому, что мог печатать человеком читаемого человека, который тестируется.

Он читает как проза. Который для меня большой плюс. Но, как и во всем, результаты будут различаться.

describe Model do
  it "should do what I want" do
    this.should == that
    it.should be_nil
    that.should_not be_true
  end
end 

Также не соответствует тестовой структуре, вы также должны подумать о таком инструменте покрытия, как RCOV. Анкет Он интегрируется с RSPEC и расскажет вам, где ваш код не хватает тестирования.

RSPEC - это консенсус популярных книг Rails, таких как «The Rails Way». Профи-это тесты, которые читаются как английский, форматы вывода, которые читаются как английский, и на лету. Минусы - это медленная скорость, и библиотека иногда чувствует себя «волшебной», то есть слишком чуждо, для кодеров, которые более знакомы с рубиновыми и модульными тестами. RSPEC также предлагает огурец и Gherkin, которые являются способами написать пользовательские истории, которые являются полезным принятием клиента.

Minitest встроен в Ruby 1.9. Профи ИМХО - это быстрая скорость, очень легко читать/записать для кодеров других языков, а также тесты, которые используют тот же стиль кода, который вы использовали бы в своем реальном коде. У Minitest есть гораздо больше, чем у большинства людей, например, в Minitest Spect сочетаются матчи BDD, похожие на RSPEC, Minitest Mock - это смешивая система, а Minitest Clackmark предназначен для профилирования производительности.

По моему личному опыту, люди, которые строят приложения Rails, имеют тенденцию к RSPEC, а люди, которые строят чистый код Ruby, имеют тенденцию к министерству, спецификации, макете, тесту и так далее.

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

С помощью Rspec Go и Grespe Comething Feathry Factory Girl или Machinist для генерации ваших тестовых данных не используйте светильники.

Что касается того, что сказал Майк, проект RSPEC довольно активен с новыми версиями, которые обычно выпускаются с каждой версией Rails, чтобы помочь ему не отставать от разработки структуры.

Rspec - это хорошо, но я думаю, что недавно было много разговоров и движения за позади МИНИТАНТ который поставляется с Ruby 1.9.x. У этого есть много тонкостей RSPEC, но намного худее и лаконично.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top