bsh*_*nks 14 testing unit-testing clojure
您更喜欢哪一个?为什么?各自的优点和缺点是什么?在哪种情况下,每个都比其他情况更胜一筹?
我对midje与clojure.test特别感兴趣,但也可以自由地提出其他Clojure测试框架.
另请参阅Clojure的最佳单元测试框架?(这个问题的答案没有详细说明"为什么").
mik*_*era 11
我没有尝试过所有这些,但我喜欢普通的老式clojure.test,原因如下:
示例代码:
(testing "Arithmetic"
(testing "with positive integers"
(is (= 4 (+ 2 2)))
(is (= 7 (+ 3 4))))
(testing "with negative integers"
(is (= -4 (+ -2 -2)))
(is (= -1 (+ 3 -4)))))
Run Code Online (Sandbox Code Playgroud)
Ale*_*sky 11
我更喜欢Midje.Midje提供了从clojure.test到更灵活,可读,抽象和优雅的测试风格的迁移路径.
Midje支持自上而下和自下而上的TDD风格,并且具有模拟和存根设施,以及一些强大的功能,如跳棋,metaconstants,表格事实.
这是一个简单的例子:
(fact "Midje can do simple stubbing"
(+ (a) 2) => 5
(provided
(a) => 3))
Run Code Online (Sandbox Code Playgroud)
我喜欢的期望或clojure.test与人性化的测试输出。这两个选项都给出了最易读的错误并提供了相当少的语法。
鉴于以下测试,您将获得以下输出。
(deftest map-comparisons
(is (= {:sheep 1} {:cheese 1 :sheep 1})))
Run Code Online (Sandbox Code Playgroud)
FAIL in (map-comparisons) (map_test.clj:5)
expected: (= {:sheep 1} {:cheese 1, :sheep 1})
actual: (not (= {:sheep 1} {:cheese 1, :sheep 1}))
Run Code Online (Sandbox Code Playgroud)
FAIL in (map-comparisons) (map_test.clj:5)
expected: {:sheep 1}
actual: {:cheese 1, :sheep 1}
diff: + {:cheese 1}
Run Code Online (Sandbox Code Playgroud)
测试看起来像:
(expect {:sheep 1} {:sheep 1, :cheese 1})
Run Code Online (Sandbox Code Playgroud)
failure in (map_expectations.clj:6) : example.map-expectations
(expect {:sheep 1} {:sheep 1, :cheese 1})
expected: {:sheep 1}
was: {:cheese 1, :sheep 1}
in expected, not actual: null
in actual, not expected: {:cheese 1}
Run Code Online (Sandbox Code Playgroud)
我对四个主要 Clojure 测试库的输出进行了更详细的比较,可以在此处找到。
| 归档时间: |
|
| 查看次数: |
3891 次 |
| 最近记录: |