2013-03-29 12 views
0

我已经安装了,Ruby 1.8.7,ci_reporter 1.8.4,测试单元2.5.4,rake 10.0.3。如何在rakefile中包含loadpath/dependency

我testA.rb:

require 'includeA.rb' 
require 'includeB.rb' 
require 'includeC.rb' 
require 'includeD.rb' 

Begin of the code... 
... End of the code 

通常我执行测试有以下CMD:

ruby -I E:/pathToIncludeA/includeA.rb -I E:/pathToIncludeB/includeB.rb -I E:/pathToIncludeC/includeC.rb -I E:/pathToIncludeD/includeD.rb E:/pathToTestA.rb/testA.rb 

而且一切工作正常。

但现在我正在使用耙,我试图以同样的方式包括目录。

这里我的Rakefile:

require 'rake/testtask' 
require 'rubygems' 
gem 'ci_reporter' 
gem 'test-unit' 
require 'test/unit' 
require 'ci/reporter/rake/test_unit' 

task :default => [:test] 

task :test do 
    ruby '-I E:/pathToIncludeA/includeA.rb', '-I E:/pathToIncludeB/includeB.rb, '-I E:/pathToIncludeC/includeC.rb', '-I E:/pathToIncludeD/includeD.rb', E:/pathToTestA.rb/testA.rb 
end 

但是,当我执行以下CMD:

rake test 

我有以下错误:

E:/Ruby/lib/ruby/site_ruby/1.8/rubygems/custom_require.rb:31:in 'gem_original_require': no such file to load -- includeA.rb (load error) 
from E:/Ruby/lib/ruby/site_ruby/1.8/rubygems/custom_require.rb:31:in 'require' 
from E:/pathToTestA/testA.rb/ 

rake aborted! 
command failed with status (1): [E:/Ruby/bin/ruby.exe -I pathToIncludeA/...] 
Tasks: TOP => default => test 

我做了什么错?有人能帮助我吗?

+0

当你这样做时会发生什么:'sh“ruby -IE:/ pathToIncludeA/...'而不是'ruby'-IE:/ ...'? – Kashyap

+0

它可以工作!非常感谢,请添加您的答案,我会给你声望! – JeanLouisGangplank

回答

1

试试这个:

task :test do 
    sh "ruby -I E:/pathToIncludeA/includeA.rb -I E:/pathToIncludeB/includeB.rb -I E:/pathToIncludeC/includeC.rb -I E:/pathToIncludeD/includeD.rb E:/pathToTestA.rb/testA.rb" 
end 

,或者,如果你需要/想用ruby方法里面的任务,改变你的testA.rb的路径加载到include(A|B|C|D).rb然后:

task :test do 
    # assuming the Rakefile and the testA.rb are in the same folder. 
    ruby "testA.rb" 
end 

如果您的测试套件由多个测试文件组成,如testA.rbtestB.rb等,那么类可能会更容易。检查Sinatra项目如何使用它来得到一个想法:Sinatra/Rakefile;

+0

该死的,我需要15个声望投票给你的答案:x – JeanLouisGangplank