在clojure中自动加载测试类?

时间:2016-05-15 22:29:51

标签: testing clojure

我在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>

那么,有没有办法自动加载所有测试类,或者我一般都认为这完全错误?

0 个答案:

没有答案