首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >clojure.test如何存储使用deftest定义的测试?

clojure.test如何存储使用deftest定义的测试?
EN

Stack Overflow用户
提问于 2013-10-09 06:27:28
回答 1查看 144关注 0票数 2

我想知道Clojure使用什么数据结构来存储使用deftest定义的测试。

我以为这是一张地图,我希望得到它的类为PersistentArrayMap,但它的出现就像它自己的类。

它在测试中使用记录吗?

代码语言:javascript
复制
user=> (use 'clojure.test)
nil
user=> (deftest test-test)
#'user/test-test
user=> (class test-test)
user$test_test

当我们运行测试时,我们只提供名称空间,它如何自动识别名称空间中的所有测试并逐一运行?

这些测试是否被添加到某种类型的测试列表中,每次我们在当前命名空间中使用deftest创建测试?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2013-10-09 06:58:14

如果您引用test.clj的源代码,您可以看到deftest宏通过调用变元在当前命名空间中创建了一个var。

代码语言:javascript
复制
 (defmacro deftest
  [name & body]
   (when *load-tests*
    `(def ~(vary-meta name assoc :test `(fn [] ~@body))
      (fn [] (test-var (var ~name))))))

测试本身就在变量中。

运行测试相当于检查名称空间中具有:test关联的所有变量。

移除周围的胶水,使:

代码语言:javascript
复制
 (doseq [v (vals (ns-interns ns))]
   (when (:test (meta v))
     (each-fixture-fn (fn [] (test-var v)))))
票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/19264681

复制
相关文章

相似问题

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