Configuration for Unit Testing deps.edn projects
clojure.test
namespace is part of the Clojure standard library, so no additional dependencies are required.
As tests are defined in files inside the test
directory, that directory should be included on the classpath for the project.
To use the test runners with deps.edn
projects, the test
should be on the classpath. Tests are not typically included when Clojure is deployed, so the test
path is not included in the main paths
configuration of deps.edn
.
The recommended approach is to include the test path as an alias, either by itself or with a test runner.
{:paths ["src" "resource"]
:aliases
{:test-path
{:extra-paths ["test"]}}
}
practicalli/clojure-deps-edn
practicalli/clojure-deps-edn contains several test runner tools that each include the test
directory as an additional path.
Test runners for all projects
Install practicalli/clojure-deps-edn to have access to test runners and many other development tools for deps.edn
based projects.
Configure Emacs CIDER test runner
Create a .dir-locals.el
file to configure default aliases when running deps.edn projects from Emacs CIDER / Spacemacs.
((clojure-mode . ((cider-clojure-cli-global-options . "-A:test"))))
Project level configuration section contains many example configurations that can be set via .dir-locals.el
file. Remember to revert-buffer
an existing project buffer or open a new buffer to load in changes from the .dir-locals.el
file.
Leiningen automatically includes the test
directory when running, so no additional configuration is required if all tests reside inside the test
directory.
Run all the tests saved to file:
lein test
The following Leiningen plugins watch the file system and will run tests when a file change is detected in the project files.
Using different paths
:test-paths
added as a top level key to the defproject
configuration in the project.clj
file will configure specific paths for tests
For example, if the tests are defined under project-name/clj/tests
then the project.clj file would look as follows:
(defproject myproject "0.5.0-SNAPSHOT"
:description "A project for doing things."
:license "Creative Commons Zero"
:url "http://github.com/practicalli/myproject"
:dependencies [[org.clojure/clojure "1.10.1"]]
:test-paths ["clj/test" "src/test/clojure"]
:plugins [[lein-auto "0.1.3"]])
:source-paths
can also be used to define the location of the source code files in the same manner.
References
- lambdaisland/kaocha is a test runner that supports Clojure CLI, Leiningen and Boot project configuration.