Minitest是新一代Ruby測試框架,其實小型測試也將成為Rails4的默認測試框架的方向,并且有著光明的前景,武林技術頻道將為大家推薦Ruby單元測試框架TestUnit的替代者MiniTest介紹。
MiniTest 為什么成為最新 Ruby 和 Rails 的首選,它有哪些吸引人的東西呢?
Ruby 1.8時代,Ruby 和 Rails 的默認測試框架都是 TestUnit,TestUnit 歷史悠久,它最大的問題是太慢,太臃腫了,它包含了一堆現在很少使用的第三方庫,比如GTk v1, GTk v2, FxRuby,另外一個大問題的是它缺乏一些基本的測試特性,比如 spec DSL的測試風格,比如 mock 支持等等。
MiniTest 相當于對 TestUnit 做了一次大的重構翻新,它繼承了 TestUnit 大部分用法,消除 TestUnit 中不恰當的依賴,另外增加了基本的測試特性,比如 spec 和 mock等,整體上變得相當快速,簡單整潔。
在 Ruby 和 Rails 的世界,有一個測試框架 Rspec 使用也是非常廣泛的,甚至目前使用廣泛程度超過 TestUnit 和 MiniTest,它為什么沒有成為默認框架呢?我想 MiniTest 相對于 Rspec 最大的優勢是簡單和延續性,Rspec 相比 MiniTest 要龐大復雜得多,當然功能也更強大,對于內置 Ruby 的類庫來說,還是簡單和保持延續(相對 TestUnit)更有優勢。對于 Rails 來說,Rails 之父 DHH 和 Rspec 一直對不上眼,我想是 Rails 最終選擇 MiniTest 最大的原因,哈哈。
MiniTest 使用示例
如果你用過 TestUnit,MiniTest 使用非常簡單,下面是一個測試的 Hello World
?
測試代碼
?
?
class HelloWoldTest < MiniTest::Unit::TestCase
? def test_get_word
??? assert_equal "Hello World!", HelloWold.new.get_word
? end
end
?
測試代碼, spec風格
?
?
describe HelloWold do
? it "should return hello world" do
??? HelloWold.new.get_word.must_equal "Hello World!"
? end
end
?
如果要在 Rails 項目使用 MiniTest,可以使用 gem minitest-rails,使用 minitest-rails 之后,rails generator 生成的 test 就都轉換為 minitest 風格代碼。
上文是武林技術頻道小編介紹的關于Ruby單元測試框架TestUnit的替代者MiniTest介紹,其實小型測試相當簡單和快速,它是最新Ruby和Rails的首選。
新聞熱點
疑難解答
圖片精選