Test de Leiningen
-
27-09-2019 - |
Question
Je suis en train d'écrire un petit projet de Clojure utilisant Leiningen avec la structure de répertoire suivant:
project
+ src
+ org/example/project/core.clj
+ test
+ org/example/project/core.clj
Quand je lance lein test
, il signale qu'il a couru 0 avec des tests 0 échecs, mais je mets volontairement un test conçu pour échouer dans le test /.../ fichier core.clj.
J'ajouté la ligne :test-path test
à mon dossier project.clj
et quand je re-ran, a l'erreur:
Exception in thread "main" java.lang.IllegalArgumentException: No implementation of method: :as-file of protocol: #'clojure.java.io/Coercions found for class: clojure.lang.Symbol (NO_SOURCE_FILE:0)
at clojure.lang.Compiler.eval(Compiler.java:5440)
at clojure.lang.Compiler.eval(Compiler.java:5391)
at clojure.core$eval.invoke(core.clj:2382)
at clojure.main$eval_opt.invoke(main.clj:235)
at clojure.main$initialize.invoke(main.clj:254)
at clojure.main$script_opt.invoke(main.clj:270)
at clojure.main$main.doInvoke(main.clj:354)
at clojure.lang.RestFn.invoke(RestFn.java:458)
at clojure.lang.Var.invoke(Var.java:377)
at clojure.lang.AFn.applyToHelper(AFn.java:174)
at clojure.lang.Var.applyTo(Var.java:482)
at clojure.main.main(main.java:37)
Caused by: java.lang.IllegalArgumentException: No implementation of method: :as-file of protocol: #'clojure.java.io/Coercions found for class: clojure.lang.Symbol
at clojure.core$_cache_protocol_fn.invoke(core_deftype.clj:471)
at clojure.java.io$fn__7328$G__7323__7333.invoke(io.clj:34)
at clojure.java.io$file.invoke(io.clj:401)
at leiningen.util.ns$namespaces_in_dir.invoke(ns.clj:38)
at leiningen.test$test.doInvoke(test.clj:45)
at clojure.lang.RestFn.invoke(RestFn.java:411)
at clojure.lang.Var.invoke(Var.java:365)
at clojure.lang.AFn.applyToHelper(AFn.java:163)
at clojure.lang.Var.applyTo(Var.java:482)
at clojure.core$apply.invoke(core.clj:542)
at leiningen.core$apply_task.invoke(core.clj:156)
at leiningen.core$_main.doInvoke(core.clj:212)
at clojure.lang.RestFn.applyTo(RestFn.java:138)
at clojure.core$apply.invoke(core.clj:540)
at leiningen.core$_main.invoke(core.clj:217)
at user$eval167.invoke(NO_SOURCE_FILE:1)
at clojure.lang.Compiler.eval(Compiler.java:5424)
... 11 more
Je suis en cours d'exécution Clojure 1.2 et la dernière lein (1.3.1).
On dirait un problème avec soit clojure.core ou le code lein.
La solution
En ce qui concerne la mise en page source. Je pense que vous l'ombre au fond de votre test avec le fichier réel core.clj. C'est probablement pourquoi clojure.test
ne trouve pas de tests. Avez-vous essayé un nom de fichier et espaces de noms différents? par exemple. test/example/project/test_core.clj
.
Autres conseils
eu le même problème. Après un certain temps je remarquai que Leins chemin par défaut des tests sont:
test / {projet name} / test / {file sous test} .clj
(notez le répertoire test "extra")