Платформа тестирования для Rails 3?

#ruby-on-rails #ruby #ruby-on-rails-3 #unit-testing #testing

#ruby-on-rails #ruby #ruby-on-rails-3 #модульное тестирование #тестирование

Вопрос:

На самом деле мы не используем test в нашем приложении (я знаю, что это плохо и печально). Я много читал о Test:: Unit, Shouda, minitest и новом Bacon. Но пока не могу определиться. В основном наши потребности таковы :

  • Использование watir (мне это нравится)
  • Легко учиться
  • Не вмешивайтесь в приложение (например, генератор Rspec — не против rspec)
  • Интеграция с rails 3
  • Ни одному клиенту не придется ее читать, только разработчику.

Что вы думаете?

Ответ №1:

Я на самом деле отказался Test::Unit и переключился на RSpec 2 . Наши тесты должны читать только разработчики, но RSpec, похоже, поощряет более структурированные тесты, чем Test::Unit . Однако она отличается от большинства других платформ тестирования, поэтому есть небольшая кривая обучения, но только в течение первых нескольких дней.

Я также настоятельно рекомендую вам не использовать приспособления Rails и взглянуть на Machinist.

Комментарии:

1. Нужно поддержать это. Лично я считаю, что Rspec намного проще в использовании, чем Test::Unit. Это не сильно мешает работе приложения, поскольку все хранится в spec/ каталоге. Также для популярной альтернативы Machinist взгляните на Factory Girl. github.com/thoughtbot/factory_girl_rails

Ответ №2:

Я бы выбрал minitest по умолчанию в Ruby 1.9.2 (заменив test / unit) и использовал формат test / unit, поскольку это то, с чем знакомы многие разработчики

Ответ №3:

Ваш последний пункт заставляет меня рекомендовать Test::Unit. Если вам не нужно, чтобы тесты были доступны для чтения клиентом, Test::Unit намного проще и не требует таких больших знаний о платформе тестирования, прежде чем вы сможете начать. Похоже, что она интегрируется с Watir (хотя я не использовал ее для этого).

Я уверен, вы получите множество предложений по каждому из перечисленных вами фреймворков, я бы сказал, просто выберите один и начните писать тесты!

Ответ №4:

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

 class TestStuff < Test::Unit::TestCase
  def setup
    @foo = Klass.new
  end

  should "be of class Klass" do
    assert_equal Klass, @foo.class
  end

end
  

Вы не думали использовать Capybara вместо Watir?