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