使用Rake运行Ruby单元测试

inb24sb2  于 4个月前  发布在  Ruby
关注(0)|答案(3)|浏览(51)

我正在研究使用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目录,所有的文件都在那里。

nvbavucw

nvbavucw1#

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

字符串

fjnneemd

fjnneemd2#

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

$:.unshift 'lib'
require 'test_entry'

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

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


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

ac1kyiln

ac1kyiln3#

要运行Minitest中编写的测试,请执行以下操作:
1.在应用的根目录中创建Rakefile(或rakefilerakefile.rbRakefile.rb)文件,其中包含以下内容:

require 'minitest/test_task'

Minitest::TestTask.create

字符串
假设您的测试文件具有_test后缀,并且位于test目录下。
1.运行rake test
Minitest瑞克文件

相关问题