李哲 — 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 skipss
这里再介绍一下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"
参考链接:
本文作者系OneAPM工程师陶炳哲 ,想阅读更多好的技术文章,请访问OneAPM官方技术博客。