“rake test”出现问题... rake报告“无法找到任务./test/whatever-my-first-test-file-is.rb”

时间:2010-07-31 15:51:42

标签: ruby rake

我已将这些信息放入一个牧场,但在此重复(牧师链接http://pastie.org/private/4vprzwhllqv35egrf8jzwg

问题出现在我自己的项目中,但我不知道我做错了什么:这是完整的输出:

$ rake test

(in /Users/me/Projects/version-three)
/Users/me/.rvm/rubies/ruby-1.9.2-rc2/bin/ruby -I"lib:test" "/Users/me/.rvm/gems/ruby-1.9.2-rc2/gems/rake-0.8.7/lib/rake/rake_test_loader.rb" "./test/test_a.rb" "./test/test_configuration.rb" "./test/test_generator_base.rb" "./test/test_lazy_attr_accessor.rb" "./test/test_output_spokesman.rb" "./test/test_path_for_executable.rb" 
Test run options: --seed 28629

Loaded suite /Users/me/.rvm/gems/ruby-1.9.2-rc2/gems/rake-0.8.7/lib/rake/rake_test_loader
Started

...............Could not find task "./test/test_a.rb".
......

Finished in 0.014943 seconds.

21 tests, 19 assertions, 0 failures, 0 errors, 0 skips
Test run options: --seed 28629

你可以看到有一个错误的Could not find task "./test/test_a.rb" - 我添加了这个文件只是为了阻止它在我的第一个文件上进行重要的测试!

Rakefile不可能更简单,只需这样:

require 'rake/testtask'

task :default => :test

Rake::TestTask.new do |t|
  t.libs << "test"
  t.test_files = FileList['./test/test_*.rb']
  t.verbose = true
end

我正在使用以下版本的相关工具,因为您可以看到我正在使用RVM,我在Ruby 1.8.7上看到了同样的问题。

$ rake --version
  rake, version 0.8.7

$ ruby --version
  ruby 1.9.2dev (2010-07-11 revision 28618) [x86_64-darwin10.4.0]

$ rvm --version
  rvm 0.1.43 by Wayne E. Seguin (wayneeseguin@gmail.com) [http://rvm.beginrescueend.com/]

1 个答案:

答案 0 :(得分:0)

当需要Thor时,似乎出现了这个问题 - 据说它是一个替代品 - 也许我需要更多地研究它,但我的一个测试是测试一个Thor支持的发电机。

我会更彻底地研究一下发生了什么!

我已经确定了(愚蠢的)问题,这个消息实际上来自Thor,我有一行如下:

  def test_banner_if_starting_generator_with_no_args
    ::Cli::Generator.start(ARGV)
    # Test the banner output here...
  end

当然ARGV被设置为由Rake的FileList汇编的列表中的第一个文件,并传递给测试加载器。

很抱歉浪费任何时间来研究这个问题。

解决方案:将ARGV存根到[],因为这实际上是我正在测试的内容!