2016-11-11 2 views
0

У меня есть проект Leiningen, который использует библиотеку Midje для тестирования. Howerver Я не в состоянии запускать любые тесты, в случае lein test я получаюИсключение FileNotFound во время работы тестов Midje

java.io.FileNotFoundException: Could not locate midje/sweet__init.class or midje/sweet.clj on classpath 

или в качестве альтернативы с я

java.io.FileNotFoundException: Could not locate midje/util/ecosystem__init.class or midje/util/ecosystem.clj on classpath 

Так что я думаю, это потому, что я неправильно определен dev профиль с зависимостями но я не уверен, где настоящая проблема.

В качестве бонуса, я также не могу получить environ работу, я всегда получаю nil, который я хочу, чтобы вытащить некоторые свойства из env карты (это может быть тот же вопрос, а).

Мои project.clj

(defproject 
    project 
    "0.1.0-SNAPSHOT" 
    :dependencies 
    [[org.clojure/clojure "1.8.0"] 
    [environ "1.1.0"] 
    ;; other deps, midje is not there 
    :repl-options 
     {:init-ns mailing.repl} 
    :jvm-opts 
     ["-server"] 
    :plugins 
     [[lein-ring "0.8.13"] 
     [lein-environ "1.0.0"] 
     [lein-ancient "0.5.5"] 
     [migratus-lein "0.4.2"]] 
    :ring 
    {:handler mailing.handler/app, 
    :init mailing.handler/init, 
    :destroy mailing.handler/destroy} 
    :profiles 
     {:uberjar {:omit-source true, :env {:production true}, :aot :all}, 
     :production 
     {:ring {:open-browser? false, :stacktraces? false, :auto-reload? false}}, 
     {:dev 
     {:env 
      {:db-user "user" 
      :db-password "psswd" 
      :db-classname "org.postgresql.Driver" 
      :db-subprotocol "postgresql" 
      :db-subname "//localhost/mailer"}}} 
     {:dependencies 
[[ring-mock "0.1.5"] 
[ring/ring-devel "1.3.1"] 
[midje "1.6.3"]], 
:env {:dev true}}} 
    :migratus { 
     :store :database 
     :migration-dir "migrations" 
     :db { 
       :classname "org.postgresql.Driver" 
       :subprotocol "postgresql" 
       :subname "//localhost/mailer" 
       :user "usr" 
       :password "psswd"}} 
;; refer to user and psswd from project 
:min-lein-version "2.0.0") 
+0

Не похоже, чтобы ваши зависимости развития находились внутри блока профиля dev. – jszakmeister

+0

Да, я тоже это заметил, но я получу «Литерал карты должен содержать четное число форм», если я поставлю его там. Поэтому я не уверен, что такое правильный синтаксис. –

ответ

1

Я не пробовал это, но структура не появляется совсем верно. Я думаю, что это должно быть что-то вроде:

(defproject project "0.1.0-SNAPSHOT" 
    :dependencies [[org.clojure/clojure "1.8.0"] 
       [environ "1.1.0"]] 
    ;; other deps, midje is not there 
    :repl-options {:init-ns mailing.repl} 
    :jvm-opts ["-server"] 
    :plugins [[lein-ring "0.8.13"] 
      [lein-environ "1.0.0"] 
      [lein-ancient "0.5.5"] 
      [migratus-lein "0.4.2"]] 
    :ring {:handler mailing.handler/app 
     :init mailing.handler/init 
     :destroy mailing.handler/destroy} 
    :profiles {:uberjar {:omit-source true 
         :env {:production true} 
         :aot :all} 
      :production {:ring {:open-browser? false 
           :stacktraces? false 
           :auto-reload? false}} 
      :dev {:env {:db-user "user" 
         :db-password "psswd" 
         :db-classname "org.postgresql.Driver" 
         :db-subprotocol "postgresql" 
         :db-subname "//localhost/mailer" 
         :dev true} 
        :dependencies [[ring-mock "0.1.5"] 
            [ring/ring-devel "1.3.1"] 
            [midje "1.6.3"]]}} 
    :migratus {:store :database 
      :migration-dir "migrations" 
      :db {:classname "org.postgresql.Driver" 
        :subprotocol "postgresql" 
        :subname "//localhost/mailer" 
        :user "usr" 
        :password "psswd"}} 

    ;; refer to user and psswd from project 
    :min-lein-version "2.0.0") 

Похоже, ваш :dependecies блок в верхней не имеет некорректный формат (без закрытия ]), а также зависимости развития фактически не были связаны с :dev профилем. Я не был уверен, что :migratus принадлежит профилю :dev или нет, поэтому он находится вне его в приведенном выше примере.

FWIW, sample project файл в репозитории Leiningen является полезным ресурсом.

+0

Пытался следовать вашим советам, но ошибка остается прежней. http://pastebin.com/9uLX038t –

+0

Вы пытались работать с примером, который я привел выше? Если нет, то вы, возможно, не зафиксировали первый блок ': dependencies', что также является проблемой. Кроме того, можете ли вы привести его к меньшему примеру? Если это так, я могу взглянуть немного позже и помочь. Мой лучший совет, помимо этого, - попытаться создать новый блок 'defproject' с минимальным минимумом и посмотреть, сможете ли вы что-то запустить, а затем построить там. – jszakmeister

+0

Да, это ресурс, в который я заглянул, даже до того, как я спросил здесь, и я играл с настройкой на пару часов. Вот почему я пошел к SO, потому что я действительно не знаю, как убедить Leiningen, что Midje действительно там. Но я попробую с более сложной настройкой, и я увижу, спасибо. –

Смежные вопросы