Ruby單元測(cè)試框架TestUnit的替代者M(jìn)iniTest介紹
MiniTest 是新一代的 Ruby 測(cè)試框架,它已經(jīng)成為 Ruby 1.9 的內(nèi)置測(cè)試框架,據(jù)說它也將成為Rails 4的默認(rèn)測(cè)試框架,可謂前途一片光明。
MiniTest 為什么成為最新 Ruby 和 Rails 的首選,它有哪些吸引人的東西呢?
Ruby 1.8時(shí)代,Ruby 和 Rails 的默認(rèn)測(cè)試框架都是 TestUnit,TestUnit 歷史悠久,它最大的問題是太慢,太臃腫了,它包含了一堆現(xiàn)在很少使用的第三方庫,比如GTk v1, GTk v2, FxRuby,另外一個(gè)大問題的是它缺乏一些基本的測(cè)試特性,比如 spec DSL的測(cè)試風(fēng)格,比如 mock 支持等等。
MiniTest 相當(dāng)于對(duì) TestUnit 做了一次大的重構(gòu)翻新,它繼承了 TestUnit 大部分用法,消除 TestUnit 中不恰當(dāng)?shù)囊蕾?,另外增加了基本的測(cè)試特性,比如 spec 和 mock等,整體上變得相當(dāng)快速,簡(jiǎn)單整潔。
在 Ruby 和 Rails 的世界,有一個(gè)測(cè)試框架 Rspec 使用也是非常廣泛的,甚至目前使用廣泛程度超過 TestUnit 和 MiniTest,它為什么沒有成為默認(rèn)框架呢?我想 MiniTest 相對(duì)于 Rspec 最大的優(yōu)勢(shì)是簡(jiǎn)單和延續(xù)性,Rspec 相比 MiniTest 要龐大復(fù)雜得多,當(dāng)然功能也更強(qiáng)大,對(duì)于內(nèi)置 Ruby 的類庫來說,還是簡(jiǎn)單和保持延續(xù)(相對(duì) TestUnit)更有優(yōu)勢(shì)。對(duì)于 Rails 來說,Rails 之父 DHH 和 Rspec 一直對(duì)不上眼,我想是 Rails 最終選擇 MiniTest 最大的原因,哈哈。
MiniTest 使用示例
如果你用過 TestUnit,MiniTest 使用非常簡(jiǎn)單,下面是一個(gè)測(cè)試的 Hello World
class HelloWold
def get_word
"Hello World!"
end
end
測(cè)試代碼
require 'minitest/autorun'
class HelloWoldTest < MiniTest::Unit::TestCase
def test_get_word
assert_equal "Hello World!", HelloWold.new.get_word
end
end
測(cè)試代碼, spec風(fēng)格
require 'minitest/autorun'
describe HelloWold do
it "should return hello world" do
HelloWold.new.get_word.must_equal "Hello World!"
end
end
如果要在 Rails 項(xiàng)目使用 MiniTest,可以使用 gem minitest-rails,使用 minitest-rails 之后,rails generator 生成的 test 就都轉(zhuǎn)換為 minitest 風(fēng)格代碼。
總結(jié)
MiniTest 相當(dāng)簡(jiǎn)單快速,它延續(xù) TestUnit用法,上手非常快,同時(shí)它又提供了一些非常棒的特性,試用下來覺得非常不錯(cuò),難怪它成為最新 Ruby 和 Rails 的首選,我打算今后就用它了。
相關(guān)文章
ruby線程實(shí)現(xiàn)生產(chǎn)者消費(fèi)者問題示例(隊(duì)列Queue實(shí)現(xiàn)線程同步)
這篇文章主要介紹了ruby線程實(shí)現(xiàn)生產(chǎn)者消費(fèi)者問題示例(隊(duì)列Queue實(shí)現(xiàn)線程同步),需要的朋友可以參考下2014-05-05ruby 學(xué)習(xí)筆記(1) 初識(shí)語法
雖然ruby/ruby on rails從2007年就一直獲獎(jiǎng)無數(shù),但身為一個(gè)中國人,一直對(duì)小日本創(chuàng)造的東西不怎么感興趣,想想其實(shí)也沒必要,技術(shù)本身是無國界的,日本其實(shí)也有值得學(xué)習(xí)的地方(扯遠(yuǎn)了,呵)2010-02-02Ruby on Rails網(wǎng)站項(xiàng)目構(gòu)建簡(jiǎn)單指南
Rails項(xiàng)目通過Ruby世界中的gem和rake工具來構(gòu)建起來真的相當(dāng)方便,這里就給大家整理了一份Ruby on Rails網(wǎng)站項(xiàng)目構(gòu)建簡(jiǎn)單指南,需要的朋友可以參考下2016-06-06Ruby中XML格式數(shù)據(jù)處理庫REXML的使用方法指南
這篇文章主要介紹了Ruby中XML格式數(shù)據(jù)處理庫REXML的使用方法指南,值得注意的REXML庫處理XML字符串時(shí)的編碼問題,是需要的朋友可以參考下2016-04-04