這是不可能的,在clojure.test are
..
我調整斯圖爾特Sierra的are
支持testing
的場景和失敗的消息如下:
(defmacro my-are
[scenario fail-msg argv expr & args]
(if (or
(and (empty? argv) (empty? args))
(and (pos? (count argv))
(pos? (count args))
(zero? (mod (count args) (count argv)))))
`(testing ~scenario
(clojure.template/do-template ~argv (is ~expr ~fail-msg) [email protected]))
(throw (IllegalArgumentException. "The number of args doesn't match are's argv."))))
現在測試被包裝在一個testing
場景中,並添加失敗消息。
此宏可用於這樣的:
(deftest my-test
(my-are "Scenario 1: testing arithmetic" "Testing my stuff failed"
[x y] (= x y)
2 (- 4 1)
4 (* 2 2)
5 (/ 10 2)))
這導致:
測試總結
測試1名的命名空間
冉3個斷言,在1個測試功能
1失敗
結果
1未通過測試:
失敗在我的測試
方案1:測試算術
測試我的東西失敗
預期:(= 2( - 4 1))
實際:(不是(= 2 3))
您可以看到執行了三個斷言,失敗消息(「測試我的東西失敗)」顯示爲失敗的測試,並且場景消息(「場景1:測試算術「)是可見的。