gpt4 book ai didi

clojure - 如何检查 Clojure 测试中是否抛出了 AssertionException?

转载 作者:行者123 更新时间:2023-12-01 01:16:13 25 4
gpt4 key购买 nike

我正在尝试为我的 :pre 编写单元测试和 :post条件,我的第一个想法是这样做:

(ns myproj.battle-test
(:use clojure.test
myproj.battle))

(deftest lose-only-positive-amount-of-health
(let [actor {:health 100}]
(is (thrown? AssertionException
(:health (lose-health actor -5))))))

但我不知道如何引用 AssertionException从我的测试文件中,并得到一个异常:
java.lang.IllegalArgumentException: Unable to resolve classname: AssertionException

我尝试了各种方法(谷歌没有帮助,大概是因为这个问题太简单了)但没有任何运气,所以我如何检查 AssertionException被扔了?

我意识到这是一个初学者的问题;这些是我的 Clojure 的前几行 :)

最佳答案

异常(exception)是类,所以只需导入它。

(ns myproj.battle-test
(:use clojure.test
myproj.battle)
(:import a.package.which.contains.AssertionException))
...

定位在哪里(在哪个包中) AssertionException定位并替换它而不是 a.package.which.contains在上面的代码中。

或者你可以使用全名,就像在 :import 中一样上面的子句,但是如果您有多个使用该类的地方,这可能会很乏味。

更新。我犯了一个错误。没有这样的类, AssertionException .有一个类 AssertionError ,并且由于它位于 java.lang 内包,它是自动导入的。 Clojure 前/后条件抛出它,所以只需使用 AssertionError而不是 AssertionException ,您的代码应该可以正常运行。

关于clojure - 如何检查 Clojure 测试中是否抛出了 AssertionException?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11957087/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com