Выполнение единичных тестов Ruby с помощью Rake
Я изучал использование инструмента построения рейка для автоматизации запуска модульных тестов. Я искал в Интернете, но все примеры были для использования рельсов. Обычно я пишу небольшие программы командной строки или простые приложения Sinatra.
Итак, я придумал следующее (возможно, плохое) решение, которое просто эмулирует то, что я буду делать в командной строке: (я просто использовал один unit test в качестве примера.)
desc 'Run unit tests'
task :test do
sh 'ruby -I lib test/test_entry.rb'
end
task :default => :test
Это работает, но я не могу не думать, что должен быть лучший способ, просто писать require 'test/test_entry.rb'
не работает. Я получаю проблемы require
, Ruby не может найти каталог lib
, где находятся все файлы.
Ответы
Ответ 1
Использовать Rake:: TestTask http://rake.rubyforge.org/classes/Rake/TestTask.html. Поместите это в свой файл Rake, а затем запустите rake test
:
require 'rake/testtask'
Rake::TestTask.new do |t|
t.libs << "test"
t.test_files = FileList['test/test*.rb']
t.verbose = true
end
Ответ 2
Проблема заключается в том, что ваш каталог lib
не включен в путь загрузки ruby. Вы можете исправить это следующим образом:
$:.unshift 'lib'
require 'test_entry'
или более надежная альтернатива, которая добавляет расширенный путь каталога lib
к пути загрузки:
$:.unshift File.expand_path(File.join(File.dirname(__FILE__), 'lib'))
require 'test_entry'
Btw, глобальная переменная $:
имеет более подробный псевдоним $LOAD_PATH
.