Ruby元编程:单元测试框架如何找到测试用例

前几天看了Google Testing Blog上的一篇文章讲到C++因为没有反射机制,所以如何注册测试用例就成了一件需要各显神通的事情。从我的经验来看,无论是Google的GTest还是微软的LTM,都是通过宏来解决问题。但是对于Ruby之流的动态语言,这种事情太小菜一叠了。请看以下代码例子:

 1 class Test
 2   def test_001
 3      puts 'test_001'
 4    end
 5 
 6   def test_002
 7      puts 'test_002'
 8    end
 9 end
10 
11 t = Test.new
12 test_methods = t.public_methods.grep(/^test_/)  # 把所有test_开头的方法找出来。
13 test_methods.each do |test|
14   t.send(test)  # 执行每个测试用例。
15 end

有兴趣的同学可以自己去考察一下Ruby单元测试框架的实现,不了解元编程的话可以参考Metaprogramming Ruby。

你可能感兴趣的:(Ruby)