Clojure单元测试。如何测试函数是否抛出异常?

问题描述 投票:2回答:1

我看到有一种方法可以测试函数是否抛出C类异常。但是有没有办法测试函数是否抛出任何异常。或断言它不应该抛出异常?

unit-testing clojure
1个回答
6
投票

对于不期望异常的测试,请正常编写测试。抛出的任何异常都将导致测试失败。

对于可能抛出任何异常的测试,请使用ExceptionThrowable(Exception的超类)。

例如:

(deftest mytest 
  (is (thrown? Exception (/ 1 0))))

(/ 1 0)将投掷一个java.lang.ArithmeticException,但也将匹配它的父类java.lang.Exception

您还可以编写一个not-thrown?宏来执行clojure.test中与thrown?宏相反的操作。

作为旁注,您通常希望在进行单元测试时捕获更具体的错误,因为您的代码可能会抛出新的意外错误,但您的测试将很愉快地通过。

© www.soinside.com 2019 - 2024. All rights reserved.