2011-09-03 29 views
0

任何人都可以拋出一條線嗎?如何在調試和測試寶石時包含目錄

我在測試實現中遇到問題,具體而言,在需要文件時。

我正在開發一個名爲mme_tools的gem,其目錄樹就像這樣。使用珠寶商產生最初的支架。

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子目錄的容器(即require 'mme_tools/debug.rb')。

的例子 dir我可以做一些凌亂的測試(演示),因爲我進步。簡單地將require 'mme_tools'放在每個演示的頂部,並使用選項-I../lib運行ruby即可。事實上,我使用Netbeans進行開發,因此我在每次運行中都包含該選項。

我的問題在測試時出現。在test_mme_tools.rb頂部我

require 'test/unit' 
require 'mme_tools' 

,但我的測試不工作,因爲我覺得mme_tools.rb沒有找到。從我從shell運行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中出現相同的,exceptuating,它顯示了完整的跟蹤

文件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

假設你繼續耙,並更新到使用MINITEST,你可以使用一個Rake文件看起來像這樣:

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