如何 运行 在启动环形服务器之前进行测试
How to run tests before start ring server
我正在开发一个 clojure API,我想每次启动我的服务器时,运行 在它之前进行测试。
我找到了函数 (运行-tests) 和 (运行-all-tests) 但是 clojure 说这个函数在那个命名空间中不存在。如果我把 (:use clojure.test) 放在我的 ns 上,这个函数就可以工作,但是它 运行s 从我正在使用的库和 clojure 核心进行测试。
这是我的处理程序,我在其中放置了主要方法,然后我想要 "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}))
您可以通过 (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)。当测试失败时不执行下一步,在某处显示报告,并且不部署代码。
如果您的项目是 leiningen 项目,您可以在 project.clj 中定义一个别名,将测试和 运行 任务结合起来,如下所示:
:aliases {"test-and-run" ["do" "test" "run"]}
;; .lein.sh test-and-run
我正在开发一个 clojure API,我想每次启动我的服务器时,运行 在它之前进行测试。
我找到了函数 (运行-tests) 和 (运行-all-tests) 但是 clojure 说这个函数在那个命名空间中不存在。如果我把 (:use clojure.test) 放在我的 ns 上,这个函数就可以工作,但是它 运行s 从我正在使用的库和 clojure 核心进行测试。
这是我的处理程序,我在其中放置了主要方法,然后我想要 "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}))
您可以通过 (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)。当测试失败时不执行下一步,在某处显示报告,并且不部署代码。
如果您的项目是 leiningen 项目,您可以在 project.clj 中定义一个别名,将测试和 运行 任务结合起来,如下所示:
:aliases {"test-and-run" ["do" "test" "run"]}
;; .lein.sh test-and-run