Midje 测试框架

Clojure 内置了测试框架 clojure.test,它很简单好用。但喜欢其他测试风格的人们也完成了不少其他框架。例如 Midje。它的设计目标是支持从顶到下的测试,很容易写出隔离调用的真正的单元测试:

clojure(defn my-formula [n]
   (+ (pow n 2) 5))

(fact "my-formula 函数使用 pow 函数结果加上5"
   (my-formula 3) => 5
      (provided (pow 3) => 0)) 

通过 provided 段,就成功地将 pow 函数的效果在测试中本地化。这样不论 pow 函数内部的逻辑是否正确,我们的这个 fact 能独立地验证 my-formular 函数的正确性。

当然,我们注意到这种做法是白盒测试,上述测试的另一个好处是明确地说明了 my-formula 函数的依赖。

Midje 的其他方便性在于其语法,非常简洁清晰,当然有点不 clojure。它的左边一般不加什么处理,仅仅是被测函数调用,而右边不仅仅是结果,不光能进行等值测试,还可以用测试函数来比较。

clojure(fact
  (sort [3 1 4 2]) => (just #{1 2 3 4}))

例如常用的 just 比较函数,可以”聪明匹配“,它看到自己的参数是一个 set,就知道我们仅关心结果的内容,而非其次序。要比 clojure.test 中我们的写法更为清晰:

clojure(is (= #{1 2 3 4} (hash-set (sort [3 1 4 2])))) 

Midje 的其他用法请看它自己的文档

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值