2011-03-31 31 views
2

帮我理解为什么这个项目的测试直接执行时运行,但不通过rake运行。为什么这需要从耙子失败,但明确运行时成功?

** Execute test 
/home/myockey/.rvm/rubies/ruby-1.9.2-p136/bin/ruby -I"lib:test" "/home/myockey/.rvm/gems/ruby-1.9.2-p136/gems/rake-0.8.7/lib/rake/rake_test_loader.rb" "test/unit/data_test.rb" "test/unit/station_test.rb" "test/unit/raw_test.rb" "test/unit/parser_test.rb" "test/unit/report_test.rb" 
<internal:lib/rubygems/custom_require>:29:in `require': no such file to load -- test/unit/../metar_test_helper.rb (LoadError) 
    from <internal:lib/rubygems/custom_require>:29:in `require' 
    from test/unit/data_test.rb:4:in `<top (required)>' 
    from /home/myockey/.rvm/gems/ruby-1.9.2-p136/gems/rake-0.8.7/lib/rake/rake_test_loader.rb:5:in `load' 
    from /home/myockey/.rvm/gems/ruby-1.9.2-p136/gems/rake-0.8.7/lib/rake/rake_test_loader.rb:5:in `block in <main>' 
    from /home/myockey/.rvm/gems/ruby-1.9.2-p136/gems/rake-0.8.7/lib/rake/rake_test_loader.rb:5:in `each' 
    from /home/myockey/.rvm/gems/ruby-1.9.2-p136/gems/rake-0.8.7/lib/rake/rake_test_loader.rb:5:in `<main>' 
rake aborted! 

当我直接运行该脚本,我得到以下:

[email protected]:~/opt/joeyates-metar-parser-cdca19f/test/unit$ ruby data_test.rb 
Loaded suite data_test 
Started 
................................................... 
Finished in 0.084939 seconds. 

51 tests, 121 assertions, 0 failures, 0 errors, 0 skips 

红宝石文件的顶部看起来是这样的:

#!/usr/bin/env ruby 
# encoding: utf-8 

require File.dirname(__FILE__) + '/../metar_test_helper' 

class TestMetarData < Test::Unit::TestCase 
时通过耙TestTask运行错误

请注意,我尝试将.rb文件扩展名添加到metar_test_helper无济于事。请放心,文件的父目录中存在一个名为metar_test_helper.rb的文件,并且它具有足够的权限以供访问。

增加了赏金。我知道这肯定是一个简单的路径问题,但我真的很感谢解决它的一些指导并帮助我理解它。

回答

3

您是否在两种情况下都使用Ruby 1.9.2?

1.9.2在路径($:)中不包含".",而1.9.2之前的版本则不包含。

要检查你使用的是什么版本的Ruby,和路径是什么,异常诱导线

require File.dirname(__FILE__) + '/../metar_test_helper' 

如果不解决这个问题之前做

STDERR.puts "RUBY_VERSION is #{RUBY_VERSION}" 
STDERR.puts "Path is #{$:}" 

,问它就是它的要求,通过做

STDERR.puts "The file I'm requiring is #{File.dirname(__FILE__) + '/../metar_test_helper'}" 

,看看是什么样子的两种方法。

您可能希望看到调试等提示在How do I debug Ruby scripts?

3

这只是一个需要解决的路径问题。当您手动运行测试时,您将位于test/unit目录中,该目录似乎具有1级文件。在rake任务中,您位于测试目录的父级(假设为RAILS_HOME)。

+0

我怀疑这是一个路径isue,但我重申,我不明白为什么。请注意为它无法加载的文件提供的相对路径:“test/unit /../ metar_test_helper.rb”。这是RakeFile和我执行Rake的目录的正确相对路径。这是不是它应该采取的正确道路? – 2011-03-31 12:53:37

+0

我打算回复同样的事情,只是我不了解Ruby。 :) – Christian 2011-04-03 01:50:16

相关问题