我已经多次搜索这个问题的答案,所以这里是一个完整的解决方案,基于@ivan-grishaev 的使用测试报告的提示:
测试报告挂钩clojure.test
以提供自定义报告器,然后在通过测试运行发生的每个事件时运行这些报告器。这些事件作为称为“消息”的映射传递。最小的例子只适用clojure.pprint/pprint
于消息,但这只能让你到目前为止。这里有更多代码让您了解如何编写自定义报告器。indenting-reporter
缩进测试命名空间、sdeftest
和testing
vars,并独立于测试结果列出它们。
在你的项目中创建一个这样的文件:
(ns my.own.test-reporter
(:require [clojure.pprint :refer [pprint]]
[clojure.test :as ct]
[clojure.core.match :refer [match]]))
(defn simple-reporter [msg]
(pprint msg))
(defn indenting-reporter [msg]
(match (:type msg)
:begin-test-ns (println (str "Testing " (:ns msg) "\n"))
:begin-test-var (println (str " " (-> msg :var meta :name)))
:pass (do (println (str " " (-> msg :context first) " :pass"))
(ct/inc-report-counter :pass))
:fail (do (println (str " " (-> msg :context first) " :fail"))
(ct/inc-report-counter :fail))
:error (do (println (str " " (-> msg :context first) " :error"))
(ct/inc-report-counter :error))
:end-test-ns (println)
:end-test-var ()
:summary (pprint msg)
:else (pprint msg)))
然后在:test
您的个人资料中使用它project.clj
:
:injections [(require '[my.own.test-reporter :as tr])]
:test-report {:reporters [tr/indenting-reporter]}
您现在可以继续为输出添加颜色。