在开发代码时,有时关注单个失败测试比在命名空间中运行所有测试更有效。这适用于运行测试需要一些时间,或运行测试会产生大量失败的情况。当前运行单个带有固定值测试的最佳选项是 `test-vars`,类似于以下内容:
(use 'clojure.test)
(def counter (atom 0))
(defn setup [f] (swap! counter inc) (f)) ;; 一个带有状态的 :once 固定值
(use-fixtures :once setup)
(deftest ex (println "counter =" @counter))
(test-vars [#'ex]) ;=> counter = 1
(test-vars [#'ex]) ;=> counter = 2
然而,这有一些问题
- 没有测试报告反馈,如运行-tests 所得到的那样(在成功时,没有输出)
- 需要指定变量(不是符号),并用向量包装
*建议:* 一个新的宏 `run-test`,它指定一个符号,并提供与 `run-tests` 相同的测试报告。用法
(use 'clojure.test)
(def counter (atom 0))
(defn setup [f] (swap! counter inc) (f)) ;; 一个带有状态的 :once 固定值
(use-fixtures :once setup)
(deftest ex (println "counter =" @counter))
(run-test ex)
;=> 测试用户
;=> counter = 1
;=> 运行1个测试,包含0个断言。
;=> 0次失败,0次错误。
;=> {:test 1, :pass 0, :fail 0, :error 0, :type :summary}
(run-test ex)
;=> 测试用户
;=> counter = 2
;=> 运行1个测试,包含0个断言。
;=> 0次失败,0次错误。
;=> {:test 1, :pass 0, :fail 0, :error 0, :type :summary}
*补丁:* CLJ-1908-3.patch
*筛选:* Alex Miller