Организация до вас. Вы можете либо создать отдельное дерево каталогов для тестов интеграции, иметь отдельные файлы в одной и той же дереве каталогов, либо выполнить модульные тесты и тесты интеграции в тех же исходных файлах теста.
Единственное реальное различие между блоком & интеграционных тестами является
- Как долго они принимают, чтобы запустить
- Дополнительных настроек с другими частями вашей системы (это также означает, что они медленнее, и/или более трудно бег).
Итак, в любом случае все интеграционные тесты должны быть помечены метаданными ^:integration
для каждой функции. Этот метод также полезен при «медленных» модульных тестах.
"медленный" тест может быть помечен как этот (который использует clojure.test.check
порождающую тестирование):
(tst/defspec ^:slow round-trip-bytes 9999
(prop/for-all [orig gen/bytes]
(let [string-b64 (b64/encode-bytes->str orig)
result (b64/decode-str->bytes string-b64) ]
(assert (every? b64/base64-chars (seq string-b64)))
(assert (types/byte-array? result))
(= (seq orig) (seq result)))))
Затем в project.clj
(не загружается, я знаю), указать:
:test-selectors { :default (complement :slow)
:slow :slow }
Тогда, когда вы скажете lein run
, тесты, отмеченные ^:slow
, будут пропущены, а когда вы скажете lein run :all
, все тесты (включая «медленные») будут запущены.
Обратите внимание, что нет ключевого слова для ключевого слова :slow
. Вы можете заменить любое ключевое слово, которое хотите, например :integration
.
Я не использовал boot
много, но предполагаю, что подобная техника доступна.
Насколько я знаю, это не то, что существует в данный момент в ботинке, но мне нравится идея. – nha