Testen in Leiningen
-
27-09-2019 - |
Frage
Ich bin ein kleines Clojure Projekt Schreiben mit folgenden Verzeichnisstruktur unter Verwendung von Leiningen:
project
+ src
+ org/example/project/core.clj
+ test
+ org/example/project/core.clj
Wenn ich lein test
ausführen, meldet es, dass es lief 0 Tests mit 0 Fehlern, aber ich habe absichtlich einen Test entwickelt, in der Test /.../ core.clj Datei zum Scheitern verurteilt.
Ich habe die Zeile :test-path test
meine project.clj
Datei und als ich wieder ran, bekam den Fehler:
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
Ich bin mit Clojure 1.2 und die neuesten lein (1.3.1).
Sieht aus wie ein Problem mit beiden clojure.core oder lein Code.
Lösung
Wie für das Quelle-Layout. Ich glaube, Sie im Grunde Ihren Test mit der realen core.clj Datei Schatten. Das ist wahrscheinlich, warum clojure.test
keine Tests finden. Haben Sie versucht, einen anderen Namespace und den Dateinamen? z.B. test/example/project/test_core.clj
.
Andere Tipps
das gleiche Problem hat. Nach einer Weile ich, dass Leins Standardpfad zu Tests bemerkt, sind:
Test / {Projektname} / Test / {file-under-Test} .clj
(beachten Sie die "extra" Test-Verzeichnis)