我正在使用 Clojure 编写一个小型测试框架。
(ns pvt.core.runner
(use
[pvt.tests.deployment]
[pvt.tests.files]
[pvt.tests.jms]))
(defn- run-test
[test-name]
{test-name (test-and-log test-name)})
(defn- run-all-tests-in-namespace
[namespace-name]
(map
run-test
(vals (ns-publics (symbol namespace-name))))
)
(defn run-all-tests
[namespace-list]
(map run-all-tests-in-namespace namespace-list))
我的run-all-tests
函数接受 clojure 脚本列表,加载这些脚本中的所有公共函数并运行它们。这很棒,只是我必须实际导入这些脚本。我这样调用我的函数(run-all-tests ["pvt.tests.deployment" "pvt.tests.files" "pvt.tests.jms"])
,但这只有在我导入代码摘录开头所见的每个脚本时才有效。这不行,因为我不知道谁会调用 run-all-tests,以及将使用什么参数。
我想知道是否有办法在运行时导入这些脚本。我已经知道每个脚本的名称空间,所以我拥有所有必需的信息。这可以做到吗?谢谢