您好,登錄后才能下訂單哦!
李哲 — 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官方技術博客。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。