【问题标题】:Running Ruby unit tests with Rake使用 Rake 运行 Ruby 单元测试
【发布时间】:2012-01-26 11:01:41
【问题描述】:

我正在研究使用 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 目录。

【问题讨论】:

    标签: ruby rake


    【解决方案1】:

    使用 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
    

    【讨论】:

    • 如果您喜欢将测试组织到子目录中,请尝试使用 'test/**/test*.rb' 来适应。
    【解决方案2】:

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

    $:.unshift 'lib'
    require 'test_entry'
    

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

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2013-12-07
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-10-10
      • 2023-03-09
      • 2012-12-11
      相关资源
      最近更新 更多