Rake не может загрузить такой файл Unit Test - PullRequest
0 голосов
/ 09 октября 2018

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

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

0 голосов
/ 09 октября 2018

Что касается попыток добавить что-то подобное в начало вашего 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 обрабатывает требования в этом случае рекурсивно.FileList предоставляется rake.

Для получения дополнительной информации вы можете обратиться к документации rake gem и, возможно, http://www.virtuouscode.com/2014/04/24/rake-part-4-pathmap/

...