如何在启动响铃服务器之前运行测试

时间:2017-08-06 20:01:41

标签: testing clojure leiningen ring

我正在开发一个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}))

1 个答案:

答案 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)。当测试失败时,不执行下一步,将在某处显示报告,并且不会部署代码。