我在Clojure中有一个使用core.test的测试套件,我通过服务器启动,启动emacs,使用Cider连接到我的REPL,以及评估
来运行(ns im.core-test
(:import datomic.Util)
(:require
[im.db :as db]
[im.models.user :as user]
[clojure.java.io :as io]
[clojure.test :refer :all]
[clj-http.client :as client]
[datomic.api :as d]
[environ.core :refer [env]]))
(defn reload-db [test-fn]
(with-redefs [db/uri db/testuri]
(db/reload-db)
(with-redefs [db/conn (d/connect db/testuri)]
(test-fn))))
(comment
(run-tests 'im.user-test
'im.organization-test
'im.group-test
'im.content-test
'im.orders-test
'im.db-test
'im.collection-test))
问题是运行上面的内容,我需要首先打开这些文件中的每一个,并在上面的工作之前在REPL中对它们进行评估,因为repl不知道这些类。如果我尝试在不进入文件并进行评估的情况下要求测试,我会收到错误"无法在类路径上找到im / orders_test__init.class或im / orders_test.clj。请检查带有破折号的命名空间是否在Clojure文件名中使用下划线。"
我的每个测试文件都在/ test中,例如我的主测试文件。
;; app_root/test/orders_test.clj
(ns im.orders-test
(:require
[im.models.order :as o]
[im.db :as db]
[clojure.test :refer :all]))
例如,测试文件看起来像这样
<activity
android:name="com.your.package.name.YourActivity"
android:label="@string/app_name">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
那么,有没有办法自动加载所有测试类,或者我一般都认为这完全错误?