Clojure测试:测试断言的否定

时间:2015-08-18 04:25:06

标签: unit-testing clojure

这对我有用:

(is  (thrown? AbstractMethodError (.fun obj 1) ))

但这会爆发

(is (not (thrown? AbstractMethodError (.fun obj 1) )))

出现以下错误:

java.lang.RuntimeException: Unable to resolve symbol: thrown? in this context

据推测"抛出?"在#34;内有一些特殊含义。当我把" not"放在" not"在路上。

那么如何测试抛出的断言的否定?

1 个答案:

答案 0 :(得分:3)

你是对的,thrown?special assertion,必须出现在is之后。如果你想测试没有抛出异常(换句话说,调用评估的东西),你可能想要做类似的事情:

(is (.fun obj 1))

虽然这有一个问题:如果结果为falsey(false,nil),它将失败。完全确定:

(let [r (.fun obj 1)]
  (is (= r r)))

(这是一个重言式,只有在抛出异常时才会失败。)