转载

Rake::TestTask 介绍

李哲 — MAY 28, 2015

通常我们创建一个新的项目的时候,会建立一个 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-2.2.2/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 0.000558s, 1793.5482 runs/s, 1793.5482 assertions/s.          1 runs, 1 assertions, 0 failures, 0 errors, 0 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 0.001629s, 613.9689 runs/s, 613.9689 assertions/s.          1 runs, 1 assertions, 0 failures, 0 errors, 0 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官方技术博客。

正文到此结束
Loading...