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 srcLet'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 testAnd 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:testThis 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?