使用 Rake 运行 Ruby 单元测试

问题描述 投票:0回答:3

我正在研究使用 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
3个回答
68
投票

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

3
投票

问题是你的

lib
目录没有包含在ruby的加载路径中。你可以这样修复它:

$:.unshift 'lib'
require 'test_entry'

或更可靠的替代方案,将

lib
目录的扩展路径添加到加载路径:

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

顺便说一句,全局变量

$:
有更详细的别名
$LOAD_PATH


0
投票

适用于 Minitest 的 Sinatra 应用:

在应用程序的根目录中创建

Rakefile
(或
rakefile
rakefile.rb
Rakefile.rb
)文件,其中包含以下内容:

require 'minitest/test_task'

Minitest::TestTask.create

假设您的测试文件具有

_test
后缀并位于
test
目录下。

详细的 Minitest 自述文件

© www.soinside.com 2019 - 2024. All rights reserved.