Rake не может загрузить такой файл Unit Test
Я хочу автоматизировать тестирование с помощью граблей. Когда я запускаю это из командной строки в домашнем каталоге, мои тесты работают нормально.
ruby -I lib/radar_mon/ tests/radar_mon/test_geoname.rb
мой Rakefile выглядит так:
task default: %w[test]
task :test do
ruby "tests/radar_mon/test_geoname.rb"
end
мой тестовый файл test_geoname.rb выглядит так
require 'test/unit'
require 'geoname'
class TestGeoname < Test::Unit::TestCase
def test_first
g = Geoname.new( [0.0,0.0] )
assert_equal( [0.0,0.0], g.location)
end
end
Структура библиотеки такая
home/lib/radar_mon/geoname.rb
home/tests/radar_mon/test_geoname.rb
home/Rakefile
Как я могу настроить мой файл rake для запуска теста? Я не должен изменять оператор require в тестовом файле.
/home/pi/.rvm/rubies/ruby-2.2.10/bin/ruby tests/radar_mon/test_geoname.rb
tests/radar_mon/test_geoname.rb:2:in `require_relative': cannot load such file -- /home/pi/Documents/HurricaneTracker/tests/radar_mon/geoname (LoadError)
from tests/radar_mon/test_geoname.rb:2:in `<main>'
rake aborted!
Не уверен, что это важно, но я использую rvm.
1 ответ
Что касается попытки добавить что-то подобное в верхнюю часть вашего Rakefile, вам может потребоваться изменить это, чтобы требовать только файлы, необходимые для вашей задачи rake.
Dir[File.join(__dir__, "/**/*.rb")].each do |file|
require file
end
Более конкретно для вашего случая это будет работать:
my_files = FileList['home/lib/radar_mon/*.rb', 'home/tests/radar_mon.*rb']
my_files.each do |file|
require file
end
task default: %w[test]
task :test do
ruby "tests/radar_mon/test_geoname.rb"
end
Это работает, потому что Rake обрабатывает require в этом случае рекурсивно. FileList
обеспечивается rake
,
Для получения дополнительной информации вы можете обратиться к документации по rake gem и, возможно, http://www.virtuouscode.com/2014/04/24/rake-part-4-pathmap/