deps.edn
:
{:paths ["test" "src"]
:deps
{clojure.java-time/clojure.java-time {:mvn/version "0.3.2"}}}
indoppelkopf/test/
(ns doppelkopf.core-test
(:require
[clojure.test :as test]
[doppelkopf.src.core :refer :all]))
(test/deftest addition
(test/is (= 5 (+ 2 3)) "addition")
(test/is (= 4 (+ 3 1))))
在doppelkopf/src/
中我有core.clj
我有以下错误,当评估test.clj
:
Show: Project-Only All
Hide: Clojure Java REPL Tooling Duplicates (20 frames hidden)
2. Unhandled clojure.lang.Compiler$CompilerException
Error compiling core_test.clj at (1:1)
#:clojure.error{:phase :execution,
:line 1,
:column 1,
:source
"/home/dave/ClojureProjects/doppelkopf/test/core_test.clj"}
Compiler.java: 7665 clojure.lang.Compiler/load
REPL: 1 user/eval7600
REPL: 1 user/eval7600
Compiler.java: 7194 clojure.lang.Compiler/eval
Compiler.java: 7149 clojure.lang.Compiler/eval
core.clj: 3215 clojure.core/eval
core.clj: 3211 clojure.core/eval
interruptible_eval.clj: 87 nrepl.middleware.interruptible-eval/evaluate/fn/fn
AFn.java: 152 clojure.lang.AFn/applyToHelper
AFn.java: 144 clojure.lang.AFn/applyTo
core.clj: 667 clojure.core/apply
core.clj: 1990 clojure.core/with-bindings*
core.clj: 1990 clojure.core/with-bindings*
RestFn.java: 425 clojure.lang.RestFn/invoke
interruptible_eval.clj: 87 nrepl.middleware.interruptible-eval/evaluate/fn
main.clj: 437 clojure.main/repl/read-eval-print/fn
main.clj: 437 clojure.main/repl/read-eval-print
main.clj: 458 clojure.main/repl/fn
main.clj: 458 clojure.main/repl
main.clj: 368 clojure.main/repl
RestFn.java: 1523 clojure.lang.RestFn/invoke
interruptible_eval.clj: 84 nrepl.middleware.interruptible-eval/evaluate
interruptible_eval.clj: 56 nrepl.middleware.interruptible-eval/evaluate
interruptible_eval.clj: 152 nrepl.middleware.interruptible-eval/interruptible-eval/fn/fn
AFn.java: 22 clojure.lang.AFn/run
session.clj: 218 nrepl.middleware.session/session-exec/main-loop/fn
session.clj: 217 nrepl.middleware.session/session-exec/main-loop
AFn.java: 22 clojure.lang.AFn/run
Thread.java: 829 java.lang.Thread/run
1. Caused by java.io.FileNotFoundException
Could not locate doppelkopf/src/core__init.class, doppelkopf/src/core.clj or
doppelkopf/src/core.cljc on classpath.
我做错了什么?
您的项目结构和/或您的命名空间名称是关闭的。
你的项目是在$HOME/ClojureProjects/doppelkopf
(我将使用$P
从这里开始),(希望)您的deps.edn
驻留在哪里。然后从那里你已经添加了src
和test
作为源根也可以作为编译代码的类路径项。
所以现在我们可以假设,您有一个doppelkopf.core
命名空间,因为你想为它写一个doppelkopf.core-test
测试。
所以文件的位置必须是:
$P/src/doppelkopf/core.clj
与(很可能已经正确)(ns doppelkopf.core ...)
$P/test/doppelkopf/core_test.clj
与(ns doppelkopf.core-test ...)
最重要的几点:
- 命名空间的虚线部分(
.
)必须镜像回文件系统 - 命名空间中的破折号(
-
)必须为";munged",即-
在命名空间中必须为文件系统中的下划线_
;这是来自JVM的限制