Выполнение юнит-тестов Ruby с помощью Rake - PullRequest
33 голосов
/ 26 января 2012

Я исследовал использование инструмента сборки Rake для автоматизации запуска модульных тестов. Я искал в Интернете, но все примеры были для использования рельсов. Я обычно просто пишу небольшие программы командной строки или простые приложения Sinatra.

Итак, я пришел к следующему (вероятно, плохому) решению, которое просто имитирует то, что я буду делать в командной строке: (Я просто запустил один модульный тест в качестве примера.)

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

Ответы [ 2 ]

62 голосов
/ 26 января 2012

Использовать 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
3 голосов
/ 26 января 2012

Проблема в том, что ваша директория lib не включена в путь загрузки ruby.Вы можете исправить это так:

$:.unshift 'lib'
require 'test_entry'

или более надежная альтернатива, которая добавляет расширенный путь каталога lib к пути загрузки:

$:.unshift File.expand_path(File.join(File.dirname(__FILE__), 'lib'))
require 'test_entry'

Кстати, глобальная переменная $:имеет более подробный псевдоним $LOAD_PATH.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...