使用Rake运行Ruby单元测试

时间:2012-01-26 11:01:41

标签: ruby rake

我正在调查使用Rake构建工具来自动运行单元测试。我在网上搜索过,但所有的例子都是使用rails。我通常只是编写小型命令行程序或简单的Sinatra应用程序。

所以我提出了以下(可能是坏的)解决方案,它只是模仿我在命令行上会做的事情:(我只是以一个单元测试为例。)

desc 'Run unit tests'
task :test do
    sh 'ruby -I lib test/test_entry.rb'
end
task :default => :test

它有效,但我不禁想到必须有更好的方法,只是写require 'test/test_entry.rb'不起作用。我遇到require个问题,Ruby无法找到所有文件所在的lib目录。

2 个答案:

答案 0 :(得分:62)

使用Rake :: TestTask http://rake.rubyforge.org/classes/Rake/TestTask.html。将其放入您的Rake文件,然后运行rake test

require 'rake/testtask'

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

答案 1 :(得分:3)

问题是您的lib目录未包含在ruby的加载路径中。你可以这样解决它:

$:.unshift 'lib'
require 'test_entry'

或更可靠的替代方案,将lib目录的扩展路径添加到加载路径:

$:.unshift File.expand_path(File.join(File.dirname(__FILE__), 'lib'))
require 'test_entry'

顺便说一下,全局变量$:有更详细的别名$LOAD_PATH