我正在开发一个clojure API,我想每次启动服务器时都要运行测试。
我找到了函数(run-tests)和(run-all-tests),但是clojure说这个函数在该命名空间中不存在。如果我在我的ns中放置(:使用clojure.test),该函数可以正常工作,但它运行的是我使用的库和clojure核心的测试。
这是我的处理程序,我放置了main方法,然后我想要那个" lein run"运行我的测试然后启动服务器。
(ns clojure-api.handler
(:use compojure.core)
(:require [compojure.route :as route]
[org.httpkit.server :refer [run-server]]))
(defroutes app-routes
;routes...
)
(def app
(-> app-routes
;Some middleware))
(defn -main
[& args]
(println "Running bank tests")
(run-all-tests)
(println "Starting server")
(run-server app {:port 3000}))
答案 0 :(得分:1)
您可以通过(run-tests 'ns-one-test 'ns-two-test)
指定要运行测试的命名空间。
(defn -main
[& args]
(println "Running bank tests")
(run-tests 'ns-one-test 'ns-two-test)
(println "Starting server")
(run-server app {:port 3000}))
这可以工作,只在指定的命名空间中运行测试。
正如评论所述,测试通常在部署之前在设置中运行(例如使用Jenkins,GitLab或CircleCI)。当测试失败时,不执行下一步,将在某处显示报告,并且不会部署代码。