2.6 KiB
data-test
| DevOps Hacking with Clojure | Website & Blog
About
data-test separates test data from test code and allows a more data driven approach for testing. In case of having huge amounts of test-input & -expectations your test code will remain readable and concise. data-test is founded on and compatible with clojure.test
. Integration in your test environments will work. For explicit, intentful and obvious data, data-test uses (https://github.com/juxt/aero)[aero].
Usage
Define your data test similar to deftest
and express your test e.g. with is
macro. The given binding [input expected]
can be used in your testcode.
(ns my.cool.project-test
(:require [clojure.test :refer :all]
[data-test :refer :all])
(defdatatest should-test-multiple-specs [input expected]
(is (= input expected)))
Your test data has to be located in classpath. The path is determined by your tests namespace and your tests definition name. In given case it is my/cool/project_test/should_test_multiple_spec.edn
:
{:input 1
:expected 1}
The keys :input
and :expected
are fixed, the values can be anything you need. You can have up to 11 data specifications for each test. my/cool/project_test/should_test_multiple_spec.[1-9].edn
is a valid resource-location also.
Test can be executed by using (clojure.test/run-tests)
and will produce the usual test-output like:
Running namespace tests…
FAIL in: project_test.clj: 35: should-test-multiple-specs: project_test/should_test_multiple_specs.1.edn:
expected: 1
actual: (2)
4 tests finished, problems found. 😭 errors: 0, failures: 1, ns: 1, vars: 3
The test data file used will determine the testing context.
Reference
Loading Resources
Bindings
Resources with AERO
Generated Output
License
Copyright © 2019 meissa GmbH Licensed under the Apache License, Version 2.0 (the "License") Pls. find licenses of our subcomponents here