I'm playing with the usefulness of nested tests, but the cognitect test-runner runs all tests, which means it runs the same tests twice.
(ns a-test
(:require [clojure.test :refer [deftest is]]))
(deftest ^:subtest a-test
(is (= 1 0)))
(deftest ^:subtest b-test
(is (= 1 1)))
(deftest c-test
(a-test)
(b-test))
$ clj -X:test
Running tests in #{"test"}
Testing a-test
FAIL in (a-test) (a_test.clj:6)
expected: (= 1 0)
actual: (not (= 1 0))
FAIL in (c-test a-test) (a_test.clj:6)
expected: (= 1 0)
actual: (not (= 1 0))
Ran 5 tests containing 4 assertions.
2 failures, 0 errors.
$ clj -X:test :excludes '[:subtest]'
Running tests in #{"test"}
Testing a-test
Ran 1 tests containing 0 assertions.
0 failures, 0 errors.In the last code box I try to only run the c-test however then it skips the a-test ...
testing can be used to get nested contexts, but testings cannot be run as individual tests, so that isn't very developer friendly..
what about writing them as basic functions? clojure.test is built on dynamic variables, so using is should still work when a-fn is called from inside c-test
is there a specific reason you need them to be deftest s?