Clojure cloverage FileNotFoundException

Clojure cloverage FileNotFoundException,clojure,code-coverage,speclj,Clojure,Code Coverage,Speclj,我想使用cloverage,这样我可以检查我的代码库中有多少是由speclj测试的。但是,在将cloverage作为lein插件安装并运行:lein cloverage后,我看到以下异常: Exception in thread "main" java.io.FileNotFoundException: Could not locate app/unit/core_spec__init.class or app/unit/core_spec.clj on classpath. Please ch

我想使用cloverage,这样我可以检查我的代码库中有多少是由speclj测试的。但是,在将cloverage作为lein插件安装并运行:
lein cloverage
后,我看到以下异常:

Exception in thread "main" java.io.FileNotFoundException:
Could not locate app/unit/core_spec__init.class or app/unit/core_spec.clj on classpath.
Please check that namespaces with dashes use underscores in the Clojure file name.,
compiling:(/private/var/folders/w_/yt926bqs21g44f257yz05ctsjbv948/T/form-init4597524674545750330.clj:1:125)

Caused by: java.io.FileNotFoundException: Could not locate app/component/core_spec__init.class or app/component/core_spec.clj on classpath. Please check that namespaces with dashes use underscores in the Clojure file name.
我以前没有使用过cloverage,那么如何检查我是否正确使用了它,以前有人遇到过这个问题吗

这就是我的project.clj的样子:

(defproject app version
  :dependencies [
                 [org.clojure/clojure "1.8.0"]
                 [org.clojure/tools.logging "0.4.0"]
                 [org.clojure/tools.cli "0.3.5"]
                 [org.clojure/data.json "0.2.6"]
                 [org.postgresql/postgresql "9.4-1201-jdbc41"]
                 [org.slf4j/slf4j-log4j12 "1.7.25"]
                 [log4j/log4j "1.2.17" :exclusions [javax.mail/mail
                                                    javax.jms/jms
                                                    com.sun.jmdk/jmxtools
                                                    com.sun.jmx/jmxri]]
                 [metosin/compojure-api "1.1.11"]
                 [metosin/ring-swagger "0.24.3"]
                 [compojure "1.6.0"]
                 [cheshire "5.8.0"]
                 [ring "1.6.3"]
                 [ring/ring-json "0.4.0"]
                 [ring-logger "0.7.7"]
                 [environ "1.1.0"]
                 [korma "0.4.3"]
                 [blackwater "0.0.9"]
                 [prismatic/schema "1.1.7"]
                 [siili/humanize "0.1.1"]
                 [amazonica "0.3.117"]
                 ]

  :main app.cli.core
  :plugins [
            [lein-ring "0.12.1"]
            [lein-cloverage "1.0.10"]
            [speclj "3.3.2"]
            ]

  :test-paths ["spec"]

  :profiles {
             :uberjar {:aot :all}

             :user    {
                       :plugins
                       [[cider/cider-nrepl "0.16.0"]
                              [lein-kibit "0.1.6"]
                              [nightlight/lein-nightlight "1.0.0"]
                              [lein-cloverage "1.0.6"]
                              [jonase/eastwood "0.2.3"]
                              [lein-cloverage "1.0.9"]
                        [speclj "3.3.2"]]
                       }

             :dev     {
                       :dependencies [
                                      [ring-mock "0.1.3"]
                                      [clj-http "3.7.0"]
                                      [org.clojure/data.json "0.2.6"]
                                      [speclj "3.3.2"]
                                      [clj-time "0.14.2"]
                                      [listora/again "0.1.0"]
                                      [environ "1.1.0"]
                                      ]
                       }
             }
  )
规格/应用/组件/核心\规格clj

(ns app.component.core_spec
  (:require [speclj.core :refer :all]
            [clojure.data.json :as json]
            [clj-http.client :as client]
            [clj-time.core :as t]
            [again.core :as again]
            [clj-time.format :as f]
            [environ.core :refer [env]]))

    (describe "app"
        ; tests and things...
    )

你的问题可能与三叶草无关。看起来您正试图
要求
app.unit.core spec
,并且该文件不存在或没有正确命名(不要忘记源文件应该有下划线,而不是破折号!)

该文件确实存在于该名称空间中,并且im使用下划线。相对于
project.clj
,文件名和完整文件路径是什么?名称空间是app.unit.core-spec,文件路径是spec/app/unit/core\u spec.cljOh您的文件名带有连字符,而不是下划线!正如我在回答中所说,这就是问题所在。您希望将文件命名为
core\u spec.clj
,而不是
core-spec.clj
。此外,您是否在
/app/component/core\u spec.clj
中检查了文件名?看起来stacktrace有两个单独的跟踪问题。