我看到有一种方法可以测试函数是否抛出C类异常。但是有没有办法测试函数是否抛出任何异常。或断言它不应该抛出异常?
对于不期望异常的测试,请正常编写测试。抛出的任何异常都将导致测试失败。
对于可能抛出任何异常的测试,请使用Exception
或Throwable
(Exception的超类)。
例如:
(deftest mytest
(is (thrown? Exception (/ 1 0))))
(/ 1 0)
将投掷一个java.lang.ArithmeticException
,但也将匹配它的父类java.lang.Exception
。
您还可以编写一个not-thrown?
宏来执行clojure.test中与thrown?
宏相反的操作。
作为旁注,您通常希望在进行单元测试时捕获更具体的错误,因为您的代码可能会抛出新的意外错误,但您的测试将很愉快地通过。