Ответ 1
В поддержку Clojure 1.6 добавлена новая функция. clojure.test/test-vars будет запускать один или несколько тестовых варов с приборами.
Я думаю, что что-то вроде этого должно работать:
(clojure.test/test-vars [#'the-ns/the-test])
Как выполнить один тест (не целое пространство имен) из Clojure REPL?
Я попытался вызвать функцию напрямую, например. (the-ns/the-test)
, но мне нужно, чтобы инструменты выполнялись первыми. Поэтому я хочу найти способ начать тесты с clojure.test
.
Это близко, но не соответствует тому, что я хочу сделать: qaru.site/info/210435/...
Я не вижу упоминания о том, как это сделать из clojure.test API.
В поддержку Clojure 1.6 добавлена новая функция. clojure.test/test-vars будет запускать один или несколько тестовых варов с приборами.
Я думаю, что что-то вроде этого должно работать:
(clojure.test/test-vars [#'the-ns/the-test])
Если вы не возражаете против использования светильников, вы можете сделать следующее, прежде чем вы вызовете run-tests
:
(defn test-ns-hook []
(my-test))
Чтобы удалить крючок, вы можете сделать
(ns-unmap *ns* 'test-ns-hook)
Если вам все еще нужны ваши светильники и вы хотите остаться с одним пространством имен тестов, вы можете добавить ns-unmap
, чтобы удалить все тесты/приборы, которые вы не хотите запускать из пространства имен, прежде чем запускать тесты, смоделированные на чем-то вроде
(doseq [v (keys (ns-publics 'my-ns))]
(let [vs (str v)]
(if (.startsWith vs "test-") (ns-unmap 'my-ns v))))
Может быть проще работать с несколькими пространствами имен, один из которых содержит все ваши тесты и приборы и в других пространствах имен refer
для тестов и приборов, которые вы хотите запустить из основного пространства имен тестов. Затем вы можете использовать ns
для переключения в определенное тестовое пространство имен или передать run-tests
пространство имен, которое вы хотите проверить:
(ns test-main
(:require [clojure.test :refer :all]))
(deftest addition
(is (= 4 (+ 2 2)))
(is (= 7 (+ 3 4))))
(deftest subtraction
(is (= 1 (- 4 3)))
(is (= 3 (- 7 4))))
(run-tests)
;Runs all the tests
(ns test-specific
(:require [clojure.test :refer :all]
[test-main :refer :all]))
(deftest arithmetic
(subtraction))
(run-tests)
;Just runs the tests you want