これはclojure.testでare
では不可能..です
次のように私はtesting
のシナリオと失敗のメッセージをサポートするために、スチュアート・シエラのare
を調整:
(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
シナリオにラップされ、失敗メッセージが追加されます。
このマクロは次のように使用することができる:1つの名前空間
をテストした
テスト概要
1つの試験機能
1において、3つのアサーション蘭:
(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非通テスト:私のテストで
失敗
シナリオ1:(= 2(1 - 4))
実際:私のものをテストするテスト演算
は
は期待できませんでした(しません(= 2 3))
3つのアサーションが実行され、失敗したテストの失敗メッセージ(「テスト中に失敗」)が表示され、シナリオメッセージ(「シナリオ1:テスト算術」)が表示されます。