Ваши любимые тесты "gem (s)" или "plugins" в ruby ​​и rails - PullRequest
3 голосов
/ 05 декабря 2010

Все в порядке.Я увлекаюсь TDD и тестированием в целом.Лично я считаю, что это хорошая практика при разработке.

Поскольку я занимаюсь рубином, я никогда не чувствовал необходимости пробовать некоторые "тестовые гемы", такие как, например, rspec.Я попробовал Cucumber для тестирования высокого уровня и webrat для тестирования интеграции.

Какие драгоценные камни вам нравятся и почему?

Пожалуйста, приведите несколько примеров или указателей для веб-сайтов, объясняющихразличия.

Например, почему я должен переключаться с базового модульного тестирования, которое FWK дает мне в rspec?От вебрата до капибары?От огурца до стейка?

Это может быть бесполезно, например: Мне нравится этот, потому что вывод на консоль окрашен такими же важными вещами, как: Мне нравится этот, потому что я думаюэто более выразительно при написании ++++ против этого: ++++ .

Если этот вопрос уже существует, просто пришлите мне ссылку!

РЕДАКТИРОВАТЬ

Я изменил название, чтобы быть более явным!

Ответы [ 3 ]

3 голосов
/ 05 декабря 2010

Для ruby ​​существует просто безумное количество платформ тестирования, выбор из которых сводится к личным предпочтениям. Мой личный фаворит бунт

Riot делает несколько предположений о том, как тесты должны быть написаны. Двумя важными являются то, что вы должны тестировать одну «вещь» за тест, и что утверждения не должны изменять эту «вещь». Делая эти предположения, тесты могут быть значительно ускорены, так как они должны запускать установку только один раз для каждого блока (а не один раз для каждого теста).

пример из файла readme

context "An Array" do
  setup { Array.new }

  context "with one element" do
    setup { topic << "foo" }
    asserts("is not empty") { !topic.empty? }
    asserts("returns the element on #first") { topic.first == "foo" }
  end
end

topic - это способ, которым вы ссылаетесь на то, что было настроено в setup. Это также основа синтаксиса, есть идея «макросов утверждения», которая позволит вам испортить ваши тесты. Вы также можете использовать denies вместо asserts для отрицательного утверждения. Учитывая эти две вещи, приведенный выше пример можно записать как

context "An Array" do
  setup { Array.new }

  context "with one element" do
    setup { topic << "foo" }
    denies("is not empty") { topic }.empty?
    asserts("returns the element on #first") { topic.first }.equals('foo')
  end
end

Все еще своего рода верхушка айсберга, но, надеюсь, это даст вам хоть какое-то чувство к нему.

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


Еще одна вещь, которую я бы упомянул в отношении TDD, это spork . Идея состоит в том, что загрузка окружения рельсов может легко занять 30-40 секунд, и это может стать очень раздражающим, когда вы выполняете tdd. Spork настраивает среду rails, а затем создает процесс при каждом запуске теста. Все уже в памяти, поэтому тестовые запуски запускаются очень быстро.

В настоящее время они поддерживают rspec, cucumber и test / unit. (Сорта планирует оказать поддержку в борьбе с беспорядками однажды, когда у меня будет время)

2 голосов
/ 05 декабря 2010

Мне нравится minitest ( cheatsheet ), потому что он довольно маленький и очень быстрый. Он включает в себя как модульное тестирование, так и специальные системы (а также макеты и бенчмаркинг). Я лично предпочитаю модульные тесты, а не спецификации, поскольку синтаксис Cucumber и тому подобного кажется «доступным только для чтения» (противоположность языкам «только для записи», таким как Perl или APL :).

1 голос
/ 05 декабря 2010

Мои текущие фавориты:

Огурец Аруба для CLI)

  • Подход на естественном языке - большой плюс.
  • Легко написать функции таким образом, чтобы они действительно имели смысл для разработки.

RSpec 2

  • Опять же, более естественный языковой подход - огромная помощь.Я ненавижу все, что "утверждает" mumbo-jumbo.
  • Тонны совпадений, я не сталкивался с состоянием, которое не смог бы проверить, как у меня с Арубой.
  • Это действительно,действительно прост в использовании.

Автотест для непрерывного тестирования.

  • Он может запускать все основные платформы тестирования.
  • Itесть поддержка рычания, поэтому я могу видеть всплывающее окно, когда тест не пройден.
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...