Pergunta

Estou escrevendo um pequeno projeto de clojure usando Leiningen com a seguinte estrutura de diretório:

project
+ src
  + org/example/project/core.clj
+ test
  + org/example/project/core.clj

Quando eu corro lein test, ele relata que executou 0 testes com 0 falhas, mas eu propositadamente coloquei um teste projetado para falhar no arquivo test /.../ Core.clj.

Eu adicionei a linha :test-path test para o meu project.clj Arquivo e quando eu re-re-Ran, recebi o erro:

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

Estou executando o Clojure 1.2 e o mais recente Lein (1.3.1).

Parece um problema com o clojure.core ou o código LEIN.

Foi útil?

Solução

Quanto ao layout da fonte. Eu acho que você basicamente sombreia seu teste com o arquivo real.clj. Provavelmente é por isso clojure.test não encontra nenhum teste. Você tentou um espaço para nome e nome de arquivo diferente? por exemplo. test/example/project/test_core.clj.

Outras dicas

Teve o mesmo problema. Depois de um tempo, notei que o caminho padrão de LEINS para os testes são:

Test/{Project-Name}/teste/{File-under-test }.clj

(Observe o diretório de teste "extra")

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top