سؤال

أنا أكتب مشروعًا صغيرًا صغيرًا باستخدام Lininingen مع بنية الدليل التالية:

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

عندما أركض lein test, ، تقارير أنه أجرى اختبارات 0 مع 0 إخفاقات ، لكنني أضع اختبارًا عن قصد مصمم للفشل في ملف الاختبار /.../ 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 1.2 وأحدث Lein (1.3.1).

يبدو وكأنه مشكلة مع clojure.core أو رمز لين.

هل كانت مفيدة؟

المحلول

أما بالنسبة لتخطيط المصدر. أعتقد أنك تظل اختبارك بشكل أساسي مع ملف core.clj الحقيقي. ربما هذا هو السبب clojure.test لا يجد أي اختبارات. هل جربت مساحة اسم واسم مختلفة؟ على سبيل المثال. test/example/project/test_core.clj.

نصائح أخرى

كان نفس القضية. بعد فترة من الوقت لاحظت أن مسار Leins الافتراضي إلى الاختبارات هو:

اختبار/{project-name}/اختبار/{file-under-test ).clj

(لاحظ دليل الاختبار "الإضافي")

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top