如何获得clojure中的单元测试列表?

时间:2015-03-21 01:40:23

标签: clojure

我使用deftest来定义一些单元测试(测试是由宏生成的,这就是标识符完全合格的原因):

   (clojure.test/deftest
      init-globals-test
        (clojure.test/is (clojure.core/= 40 casc-gen-org.dev/*board-width*))
        (clojure.test/is (clojure.core/= 40 casc-gen-org.dev/*board-height*)))

然而,当我运行测试时:

(run-tests)

我得到以下内容:

: #'casc-gen-org.dev/clj-run-runtime-uts{:type :summary, :fail 0, :error 0, :pass 6, :test 3}

它说我有3个测试和6个断言(假设我正在读这个),但我只期望1个测试和2个断言。我假设我在我的repl somwhere中有一些陈旧的测试,我想删除它们。

我查看了deftest(https://clojure.github.io/clojure/clojure.test-api.html)的文档,但没有看到与列表测试相关的任何内容。

如何列出当前定义的测试?

1 个答案:

答案 0 :(得分:1)

clojure.test执行手动搜索/过滤以查找包含:test元数据的变量,并且使用该元数据键找到的所有变量都被视为测试。我们也可以这样做,并列出将被视为单元测试的变量,其中包含一个无参数的小函数:

#(->> (all-ns)
      (mapcat (comp vals ns-interns))
      (filter (comp :test meta)))