#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?