Clojureのカバレッジ計測用ライブラリ Cloverage を使ってみます。
leiningenのプラグインとして利用できるので、profile.cljの:pluginsにプラグインを追加します。
;; ~/.lein/profile.clj の :plugins に追加 [lein-cloverage "1.0.2"]
カバレッジの計測対象となるプロジェクトを作成します。
> lein new cloverage-test
プログラムを作成します。
;; src/cloverage_test/core.clj (ns cloverage-test.core) (defn fizzbuzz [n] (case (mod n 15) 0 "fizzbuzz" (3 6 9 12) "fizz" (5 10) "buzz" (str n))) (defn run [end] (mapv fizzbuzz (range 1 (inc end))))
テストコードを作成します。
;; test/cloverage_test/core_test.clj (ns cloverage-test.core-test (:use clojure.test cloverage-test.core)) (deftest fizzbuzz-test (testing "run" (is (= ["1" "2" "fizz"] (run 3)))))
テスト+カバレッジ計測を実行します。(lein cloverage)
> lein cloverage Test namespaces: (cloverage-test.core-test) Performance warning, cloverage_test/core.clj:3 - case has int tests, but tested expression is not primitive. Loaded cloverage-test.core . Instrumented namespaces. Testing cloverage-test.core-test Ran 1 tests containing 1 assertions. 0 failures, 0 errors. Ran tests. Produced output in /home/kurohuku/project/cloverage-test/target/coverage . HTML: file:///home/kurohuku/project/cloverage-test/target/coverage/index.html
以下のようなHTMLが出力されます。
テストコードを追加してすべての行が実行するようにしてみます。
;; test/cloverage_test/core_test.clj (ns cloverage-test.core-test (:use clojure.test cloverage-test.core)) (deftest fizzbuzz-test (testing "run" (is (= ["1" "2" "fizz" "4" "buzz" "fizz" "7" "8" "fizz" "buzz" "11" "fizz" "13" "14" "fizzbuzz"] (run 15)))))
0 件のコメント:
コメントを投稿