本文首发于掘金专栏。
Ruby Koan是一个学习Ruby语言语法的开源项目,利用测试驱动开发的方式让学习者参与其中,得到及时的学习进度反馈。
它的代码比较简单,本文就通过解读它的关键源码来分析一个简单的单元测试框架是如何识别测试类、测试方法,以及如何显示测试进度的。
测试类
新建一个测试类AboutArrays类继承自Neo::Koan
类,就可以使用Neo::Koan
类中的一系列assert方法了。(这些方法定义在moduleNeo::Assertions
中,通过minxin的方式加入Neo::Koan
类)
# ./Neo.rb Neo::Assertions
def assert(condition, msg=nil)
msg ||= "Failed assertion."
flunk(msg) unless condition
true
end
def assert_equal(expected, actual, msg=nil)
msg ||= "Expected #{
expected.inspect} to equal #{