天天看点

Rake::TestTask 介绍

通常我们创建一个新的项目的时候,会建立一个

test

或者

spec

的文件夹来存放测试的文件,运行这些测试需要单独的命令,比如在项目目录下执行

rspec

.或者

ruby test.rb

等等,这些测试的工具中大多也都提供了更方便的方式来运行这些测试,但是如果你喜欢用

Rake

的话,那就有另外一个选择

Rake::TestTask

先上代码:

require "rake/testtask"

    Rake::TestTask.new do |t|
      t.libs << "test"
      t.pattern = "test/*_test.rb"
      t.verbose = true
    end
           

将以上代码保存或添加到项目目录中的

Rakefile

,然后在这个目录下执行

rake test

,你就可以看到如下输出(这里我用的测试框架是

Minitest

):

/home/lizhe/.rvm/rubies/ruby-/bin/ruby -I"lib:test"             "/home/lizhe/.rvm/rubies/ruby-2.2.2/lib/ruby/2.2.0/rake/rake_test     _loader.rb" "test/person_test.rb"
    Run options: --seed 535

    # Running:

    .

    Finished in s,  runs/s,  assertions/s.

     runs,  assertions,  failures,  errors,  skips
           

如果去掉最上面代码中的

t.verbose = true

的话:

require "rake/testtask"

    Rake::TestTask.new do |t|
      t.libs << "test"
      t.pattern = "test/*_test.rb"
    end
           

则输出结果就不会显示执行的

ruby

命令,如下:

Run options: --seed 17527

    # Running:

    .

    Finished in s,  runs/s,  assertions/s.

     runs,  assertions,  failures,  errors,  skips
           

这里再介绍一下

Rake::TestTask

的配置选项:

  • libs

    会被添加到

    $LOAD_PATH

    中;
  • pattern

    测试文件的名称匹配,还有另外一个叫做

    test_files

    ,这两个使用哪一个都可以,如果同时使用的话,会合并两者;
  • verbose

    输出这个

    Rake::TestTask

    执行的具体Ruby命令;
  • options

    指定给测试框架的参数,类型为数组,也可以通过传入

    TESTOPTS

    命令行参数达到相同的目的;
  • ruby_opts

    执行ruby命令时的参数,类型为数组,比如可以在指定为

    -rtesthelper

    ,避免每个测试文件重复

    require "test_helper"

  • name Rake Task

    的名称,默认是

    test

还有一点,在我们执行

rake test

的时候,是可以传入一些参数的,比如我执行执行

test/dummy_test.rb

这个测试,那么就可以指定TEST参数:

rake test TEST=test/dummy_test.rb
           

还可以通过

TESTOPTS

给你使用的测试框架传入参数,比如

Minitest

有-v和-p两个参数,那么就可以这样传进去:

rake test TESTOPTS="-vp"
           

参考链接:http://ruby-doc.org/stdlib-2.2.2/libdoc/rake/rdoc/Rake/TestTask.html

本文系OneAPM工程师编译整理。OneAPM是中国基础软件领域的新兴领军企业。专注于提供下一代应用性能管理软件和服务,帮助企业用户和开发者轻松实现:缓慢的程序代码和SQL语句的实时抓取。想阅读更多技术文章,请访问OneAPM官方技术博客。