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.

War es hilfreich?

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)

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top