如何在clojure中获得单元测试列表?
我使用deftest定义一些单元测试(测试由宏生成,这就是标识符完全合格的原因): 但是,当我运行测试时:如何在clojure中获得单元测试列表?,clojure,Clojure,我使用deftest定义一些单元测试(测试由宏生成,这就是标识符完全合格的原因): 但是,当我运行测试时: (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中有一些过时的测试,我想删除它们 我查看了de
(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()的文档,没有看到任何与清单测试相关的内容
如何列出当前定义的测试?
clojure.test
执行手动搜索/筛选,以查找具有:test
元数据的变量,并且使用该元数据键找到的所有变量都被视为测试。我们也可以这样做,列出将被视为无参数小函数的单元测试的变量:
#(->> (all-ns)
(mapcat (comp vals ns-interns))
(filter (comp :test meta)))
clojure.test所做的是,它使用
所有ns
遍历每个已定义的ns,然后使用ns实习生
遍历每个ns中的每个变量,运行元数据中带有:test
键的变量。可能有也可能没有更优雅的方法来处理这个问题。至少现在我知道这不是一件小事,所以我不再尝试寻找一个简单的命令。这似乎相当令人惊讶,因为没有简单的方法可以做到这一点。(>>(所有ns)(映射ns公共)(映射CAT VAL)(过滤器(comp:test meta))
工作正常,值得用它来回答吗?
#(->> (all-ns)
(mapcat (comp vals ns-interns))
(filter (comp :test meta)))