Simplest Clojure Test
Here's how to set up clojure testing environment.
Let's start a new project directory and create a src
directory:
mkdir src
Let's create the source file with src/calc.clj
. There's a simple namespace declaration and function that adds 2 numbers.
(ns calc)
(def add [a b]
(+ a b))
Now let's test that add
function. We need a test runner. There are a couple. The most standard is test-runner. Prep for install by adding it to the dependencies list in you project root with vim deps.edn
:
{:aliases
{:test {:extra-paths ["test"]
:extra-deps {io.github.cognitect-labs/test-runner
{:git/url "https://github.com/cognitect-labs/test-runner.git"
:sha "a85b3b02765fb68684ab9ee4a8598eacf7e471d2"}}
:main-opts ["-m" "cognitect.test-runner"]
:exec-fn cognitect.test-runner.api/test}}}
We are creating an alias that we can call to run tests, called :test
.
Next, create a test
directory to store the test file:
mkdir test
And create that test file with vim test/calc_test.clj
:
(ns calc-test
(:require [clojure.test :refer [is deftest]]
[calc])
(deftest test-add
(is (= 4 (calc/add 3 1))))
Note that the significant parts of this setup. For test-runner to find the test:
- Put the test files in the
test/
directory. - Use a
-test
-suffixed namespace. - Define tests with
deftest
.
Now we can run the test via our alias by executing:
clj -X:test
This will give you some output like:
Running tests in #{"test"}
Testing calc-test
Ran 1 tests containing 1 assertions.
0 failures, 0 errors.
Does it get any simpler? What's your setup?