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

How do I get a list of unit tests in 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 某处有一些过时的测试,我想删除它们。

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

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

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

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