Ral*_*lph 16 unit-testing clojure
让组织接受备用JVM语言的方法之一是首先使用它来对Java代码进行单元测试 - "老板,我只是要在XXX中编写一些单元测试.它永远不会投入生产. "
在Clojure中有没有这方面的教程?
我刚开始使用Scala来测试Java REST服务器.在Scala中编写测试允许我嵌入预期的XML输出,使用文字List
对象模拟数据库调用等,更不用说特征使得很容易抽象出测试的公共代码.
Ale*_*ler 10
基本上你需要的是clojure.test(或许多其他的clojure测试库之一)和标准的Clojure Java互操作.
例:
(ns example.test-java-util
(:use
[clojure.test])
(:import [java.util HashSet]))
(defn new-empty-set []
(HashSet.))
(deftest test-empty-set
(is (= 0 (.size (new-empty-set))))
(is (= true (.isEmpty (new-empty-set))))
(is (= (new-empty-set) (new-empty-set))))
(deftest test-add-remove
(is (= (new-empty-set)
(doto (new-empty-set)
(.add "xyz")
(.remove "xyz")))))
Run Code Online (Sandbox Code Playgroud)
然后你会以各种方式运行它们.使用maven clojure插件构建Maven等工具会自动运行它们作为"mvn test"的一部分.在repl中,您可以执行以下操作:
example.test-java-util> (run-tests 'example.test-java-util)
Testing example.test-java-util
Ran 1 tests containing 4 assertions.
0 failures, 0 errors.
{:type :summary, :test 1, :pass 4, :fail 0, :error 0}
Run Code Online (Sandbox Code Playgroud)