Подтвердить что ты не робот

Выполнение единичных тестов 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, где находятся все файлы.

4b9b3361

Ответ 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.