Je développe une API clojure et je veux à chaque fois que je démarre mon serveur, lancer les tests avant.Comment lancer les tests avant de démarrer le serveur
J'ai trouvé la fonction (run-tests) et (run-all-tests) mais clojure dit que cette fonction n'existe pas dans cet espace de noms. Si je mets (: use clojure.test) à mon ns, la fonction fonctionne, mais elle exécute des tests à partir des librairies que j'utilise et du noyau de clojure.
Voici mon gestionnaire, où j'ai placé la méthode principale, alors je veux que "lein run" exécute mes tests puis démarre le serveur.
(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}))
En général, vous avez un certain type de configuration de CI qui exécute les tests avant le déploiement. Ce n'est pas une manière typique de gérer les tests en cours. Vous pouvez simplement écrire un script bash qui exécute les tests et, en cas de succès, exécuter le serveur. Cela peut être plus simple à mettre en œuvre? Je suppose que vous n'avez pas besoin d'exécuter les tests de la manière indiquée dans votre question. – Slae
Notez également que, quelle que soit la façon dont vous avez choisi d'exécuter les tests, vous devrez peut-être les placer maintenant sous vos sources habituelles pour les avoir réellement prêts à fonctionner. Par exemple. Si vous voulez faire cela avec votre uberjar, alors les fichiers de test ne font généralement pas partie de l'artefact généré. – cfrick
Je comprends que ce n'est pas une structure typique, mais je voulais exécuter les tests avant le serveur parce que cette application est un projet de collège et cette procédure serait utilisée pour la présentation. – Pituca292