Ruby单元测试框架TestUnit的替代者MiniTest介绍
MiniTest是新一代的Ruby测试框架,它已经成为Ruby1.9的内置测试框架,据说它也将成为Rails4的默认测试框架,可谓前途一片光明。
MiniTest为什么成为最新Ruby和Rails的首选,它有哪些吸引人的东西呢?
Ruby1.8时代,Ruby和Rails的默认测试框架都是TestUnit,TestUnit历史悠久,它最大的问题是太慢,太臃肿了,它包含了一堆现在很少使用的第三方库,比如GTkv1,GTkv2,FxRuby,另外一个大问题的是它缺乏一些基本的测试特性,比如specDSL的测试风格,比如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使用非常简单,下面是一个测试的HelloWorld
classHelloWold defget_word "HelloWorld!" end end
测试代码
require'minitest/autorun'
classHelloWoldTest<MiniTest::Unit::TestCase deftest_get_word assert_equal"HelloWorld!",HelloWold.new.get_word end end