2010-11-23 7 views
3

Я хотел бы начать использовать RSpec для записи тестов для моего приложения Rails, но у меня есть много существующих тестов, написанных с помощью Test :: Unit. Я хотел бы продолжать быть в состоянии запустить все тесты (или все модульные тесты, функциональные тесты и т.д.) просто из командной строки, с чем-то вродеКак интегрировать RSpec с Rake, Rails и мои существующие тесты?

rake test:units 

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

Прямо сейчас я думаю, что мне бы хотелось, чтобы мои тесты RSpec существовали рядом с моими существующими тестами, в тесте/модуле, тестированию/функционале и т. Д. Каков наилучший способ для этого? Или это даже хорошая идея? То есть, я довольно новичок в RSpec (и Ruby и Rails, если на то пошло), так что, может быть, лучше использовать RSpecs отдельно. Независимо от того, где они хранятся в файловой системе, мне все равно нужно будет запускать все тесты с одной задачей rake, и мне нужно будет собирать номера покрытия кода для всего тестового корпуса, используя rcov, который Я уже делаю свои тесты.

ответ

6

Редактировать: исправлено неверное утверждение о структуре каталогов Rspec rails.


Rspec обычно ставит свои испытания в отдельную структуру каталогов, spec/, который выглядит следующим образом:

spec/ 
├── controllers 
│   ├── pages_controller_spec.rb 
│   └── users_controller_spec.rb 
├── helpers 
│   ├── pages_helper_spec.rb 
│   └── users_helper_spec.rb 
├── models 
│   └── user_spec.rb 
├── spec_helper.rb 
└── views 
    ├── pages 
    │   └── home.html.haml_spec.rb 
    └── users 
     ├── index.html.haml_spec.rb 
     └── show.html.haml_spec.rb 

Он имеет отдельный каталог для моделей, контроллеров и представлений. Я не уверен точно, как Test :: Unit структурирует свои каталоги, но это структура каталогов по умолчанию для Rspec. Обратите внимание на файл spec_helper.rb. Этот файл сообщает Rspec, где искать спецификации и имеет несколько других параметров конфигурации.

Ваш лучший выбор - это, пожалуй, просто следовать рекомендациям rspec за то, что у вас есть spec dir и сделайте свою собственную задачу рейка, которая запускает как модульные тесты, так и тесты rspec. Что-то вроде этого:

task :run_tests do 
    system("rspec spec/") 
    system("rake test:units") 
end 

Это проведет ваши тесты rspec, а затем ваши тестовые :: Unit тесты по очереди.

+0

Значит ли это, что я не должен использовать RSpec для создания модульных тестов и функциональных тестов? По сути, ваш ответ говорит мне, что тесты rspec - это отдельный тип теста. Кроме того, с этой системой организации, похоже, нет никакого способа отделить тесты rspec, которые проверяют только один блок от тех, которые служат более крупными функциональными или интеграционными тестами. Я бы хотел поддерживать этот уровень разделения в своих тестах. Наличие одной категории тестов неприемлемо для крупных проектов, таких как тот, над которым я работаю. – Jeff 2010-11-23 20:53:18

Смежные вопросы