Full featured next generation test runner for Clojure.
Project | CI | Docs | Release | Coverage |
---|---|---|---|---|
kaocha | ||||
kaocha-cljs | ||||
kaocha-cucumber | ||||
kaocha-junit-xml | ||||
kaocha-cloverage | ||||
kaocha-boot | ||||
deep-diff |
clojure.test
assertion extensions--fail-fast
option--reporter
optionFeatures include
This is no replacement for reading the docs, but if you're particularly impatient to try it out, or if you already know Kaocha and need a quick reference how to set up a new project, then this guide is for you.
Add Kaocha as a dependency, preferably under an alias.
;; deps.edn
{:deps { ,,, }
:aliases
{:test {:extra-deps {lambdaisland/kaocha {:mvn/version "0.0-409"}}}}}
Add a binstub called bin/kaocha
mkdir -p bin
echo '#!/bin/bash' > bin/kaocha
echo 'clojure -A:test -m kaocha.runner "$@"' >> bin/kaocha
chmod +x bin/kaocha
Add a profile and alias
;; project.clj
(defproject my-proj "0.1.0"
:dependencies [,,,]
:profiles {:kaocha {:dependencies [[lambdaisland/kaocha "0.0-409"]]}}
:aliases {"kaocha" ["with-profile" "+kaocha" "run" "-m" "kaocha.runner"]})
Add a binstub called bin/kaocha
mkdir -p bin
echo '#!/bin/bash' > bin/kaocha
echo 'lein kaocha "$@"' >> bin/kaocha
chmod +x bin/kaocha
In your build.boot
add the Kaocha dependency, and import the Kaocha task
;; build.boot
(set-env! :source-paths #{"src"}
:dependencies '[[lambdaisland/kaocha-boot "..."]])
(require '[kaocha.boot-task :refer [kaocha]])
Add a binstub called bin/kaocha
mkdir -p bin
echo '#!/bin/bash' > bin/kaocha
echo 'boot kaocha "$@"' >> bin/kaocha
chmod +x bin/kaocha
By default, Kaocha assumes that:
src/
folder,test/
folder,-test
(eg. my-project.core-test
).
Also, the default test suite id is :unit
(just unit
on the command line).If your tests don't seem to run (outcome is 0 tests, 0 assertions, 0 failures
)
you may need to write up your own configuration: add a tests.edn
at the root
of the project to configure actual test and source paths, and optionally set a
reporter or load plugins (cf. Configuration in the
documentation).
Example of a catch-all tests.edn
config file (should run all
tests found in src/
and /test
, in any namespace).
#kaocha/v1
#kaocha/v1
{:tests [{:id :unit
:test-paths ["test" "src"]
:ns-patterns [".*"]}]}
;; :reporter kaocha.report.progress/progress
;; :plugins [:profiling :notifier]
}
Warning: this is not an optimal configuration. To avoid extra churn, you should try and target only folders and namespaces that actually contain tests.
Run your tests
bin/kaocha
# Watch for changes
bin/kaocha --watch
# Exit at first failure
bin/kaocha --fail-fast
# Only run the `unit` suite
bin/kaocha unit
# Only run a single test
bin/kaocha --focus my.app.foo-test/bar-test
# Use an alternative config file
bin/kaocha --config-file tests_ci.edn
# See all available options
bin/kaocha --test-help
(is (= actual expected))
instead of (is (= expected actual))
Kaocha requirements Clojure 1.9 or later.
© Arne Brasseur 2018
Available under the terms of the Eclipse Public License 1.0, see LICENSE.txt
Can you improve this documentation?Edit on GitHub
cljdoc is a website building & hosting documentation for Clojure/Script libraries
× close