在clojure中导入测试



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驻留在哪里。然后从那里你已经添加了srctest作为源根也可以作为编译代码的类路径项。

所以现在我们可以假设,您有一个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的限制

最新更新