首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何检查是否在Clojure测试中抛出了AssertionException?

如何检查是否在Clojure测试中抛出了AssertionException?
EN

Stack Overflow用户
提问于 2012-08-15 00:49:48
回答 1查看 989关注 0票数 4

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

代码语言:javascript
运行
复制
(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,并得到一个异常:

代码语言:javascript
运行
复制
java.lang.IllegalArgumentException: Unable to resolve classname: AssertionException

我试过很多方法(谷歌可能帮不上忙,大概是因为这个问题太简单了),但都没有成功,那么我该如何检查AssertionException是否抛出了呢?

我意识到这在很大程度上是一个初学者的问题;以下是我的Clojure的前几行:)

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2012-08-15 00:59:29

异常是类,所以只需导入它即可。

代码语言:javascript
运行
复制
(ns myproj.battle-test
  (:use clojure.test
        myproj.battle)
  (:import a.package.which.contains.AssertionException))
...

找到AssertionException所在的位置(在哪个包中),并用它代替上面代码中的a.package.which.contains

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

UPD。我犯了一个错。没有这样的类,AssertionException。有一个类AssertionError,因为它位于java.lang包中,所以会自动导入。Clojure的前置/后置条件会抛出它,所以只需使用AssertionError而不是AssertionException,您的代码应该可以很好地运行。

票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/11957087

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档