代码之家  ›  专栏  ›  技术社区  ›  Ralph java.is.for.desktop

莱宁根测试

  •  3
  • Ralph java.is.for.desktop  · 技术社区  · 14 年前

    我正在使用leiningen编写一个小型Clojure项目,其目录结构如下:

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

    当我跑的时候 lein test ,它报告它在0次失败的情况下运行了0个测试,但我特意在test/../core.clj文件中放置了一个设计为失败的测试。

    :test-path test 给我的 project.clj 文件,当我重新运行时,得到错误:

    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
    

    看起来clojure.core或lein代码都有问题。

    2 回复  |  直到 14 年前
        1
  •  6
  •   kotarak    14 年前

    至于源布局。我认为您基本上是用真正的core.clj文件来隐藏您的测试。这可能就是为什么 clojure.test 找不到任何测试。是否尝试了其他命名空间和文件名?如。 test/example/project/test_core.clj

        2
  •  7
  •   kitofr    13 年前

    有同样的问题。

    测试/{项目名称}/ 测试

    (注意“extra”测试目录)