Как включить каталоги при отладке и тестировании гема - PullRequest
0 голосов
/ 03 сентября 2011

Кто-нибудь может дать мне строку?

У меня проблемы с реализацией тестов, конкретно, когда требуются файлы.

Я разрабатываю гем под названием mme_tools с таким деревом каталогов, как это,Исходный каркас был создан с использованием jeweller .

mme_tools
|-- examples
|   |-- demo_enumerable.rb
|   `-- demo_print_debug.rb
|-- Gemfile
|-- Gemfile.lock
|-- lib
|   |-- mme_tools
|   |   |-- concurrent.rb
|   |   |-- debug.rb
|   |   |-- enumerable.rb
|   |   |-- version.rb
|   |   `-- webparse.rb
|   `-- mme_tools.rb
|-- LICENSE.txt
|-- Rakefile
|-- README.rdoc
`-- test
    `-- test_mme_tools.rb

, где mme_tools.rb - это просто контейнер, который требует все файлы в mme_tools subdir (то есть require 'mme_tools/debug.rb').

В примерах dir я могу делать некоторые неопрятные тесты (демонстрации) по мере продвижения.Простое размещение require 'mme_tools' в верхней части каждой из этих демонстраций и запуск ruby ​​с опцией -I../lib работает нормально.Фактически я использую Netbeans для разработки, поэтому включаю эту опцию в каждый запуск.

Моя проблема возникает при тестировании.Вверху test_mme_tools.rb у меня есть

require 'test/unit'
require 'mme_tools'

, но мои тесты не работают, потому что я думаю, что mme_tools.rb не найден.Вывод из задачи rake, которую я запускаю из оболочки:

$ rake test
rake/rdoctask is deprecated.  Use rdoc/task instead (in RDoc 2.4.2+)
/usr/bin/ruby1.8 -I"lib:lib:test" -I"/usr/lib/ruby/gems/1.8/gems/rake-0.9.2/lib" "/usr/lib/ruby/gems/1.8/gems/rake-0.9.2/lib/rake/rake_test_loader.rb" "test/**/test_*.rb" 
Loaded suite /usr/lib/ruby/gems/1.8/gems/rake-0.9.2/lib/rake/rake_test_loader
Started
E
Finished in 0.02176 seconds.

  1) Error:
test_compose(TC_MMETools):
NoMethodError: undefined method `compose' for MMETools::Enumerable:Module
    /mnt/dropbox/DESENVOLUPAMENT/Gems/mme_tools/test/test_mme_tools.rb:19:in `test_compose'

1 tests, 0 assertions, 0 failures, 1 errors
rake aborted!
Command failed with status (1): [/usr/bin/ruby1.8 -I"lib:lib:test" -I"/usr/...]

Tasks: TOP => test
(See full trace by running task with --trace)

Конечно, из Netbeans происходит то же самое, за исключением того, что он показывает полный след

Файл test_mme_tools.rb выглядит следующим образом:

require 'test/unit'
require 'mme_tools'

class TC_MMETools < Test::Unit::TestCase

  def setup
    @a=(1..12)
    @b=("A".."M")
    @c=%w{tantmateix adhuc nogensmenys urgell pocassolta carrincló bajanada casundena Massalcoreig}
  end

  def test_compose
    assert_equal [2,"B","adhuc"], MMETools::Enumerable.compose(@a,@b,@c)[1]
  end

end

Есть идеи?

1 Ответ

1 голос
/ 14 января 2012

Если вы продолжаете использовать Rake и обновляетесь для использования minitest, вы можете использовать Rakefile, который выглядит следующим образом:

require 'rake/testtask'
Rake::TestTask.new do |t|
  t.libs << 'lib'
  t.pattern = 'test/**/*.rb'
end
...