Я использую deftest определить несколько модульных тестов (тесты генерируются макросом, поэтому идентификаторы полностью квалифицированы):Как получить список модульных тестов в clojure?
(clojure.test/deftest
init-globals-test
(clojure.test/is (clojure.core/= 40 casc-gen-org.dev/*board-width*))
(clojure.test/is (clojure.core/= 40 casc-gen-org.dev/*board-height*)))
Однако, когда я запускаю тесты:
(run-tests)
я получаю следующее:
: #'casc-gen-org.dev/clj-run-runtime-uts{:type :summary, :fail 0, :error 0, :pass 6, :test 3}
Он говорит, что я 3 испытания и 6 утверждений (при условии, что я читаю это право), но я только ожидал 1 тест и 2 asserti дополнения. Я предполагаю, что у меня есть некоторые устаревшие тесты в моем repl somwhere, и я бы хотел их удалить.
Я просмотрел документ для deftest (https://clojure.github.io/clojure/clojure.test-api.html) и не вижу ничего, связанного с листинговыми испытаниями.
Как я могу перечислять тесты, которые в настоящее время определены?
Что clojure.test делает это проходит через каждый определенный нс с 'все-ns', а затем проходит через каждый var в каждом ns с помощью 'ns-interns', запустив в метаданных ключ': test'. Там может быть и не быть более элегантный способ справиться с этим. – noisesmith
По крайней мере теперь я знаю, что это не что-то тривиальное, поэтому я перестану пытаться искать простую команду. Кажется довольно удивительным, что нет никакого простого способа сделать это, хотя. – vt5491
'(- >> (all-ns) (map ns-publics) (mapcat vals) (фильтр (comp: test meta)))' работает, стоит ли выдать ответ? – noisesmith