You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Clojure使用别名运行测试失败:无法定位测试类路径问题求助

问题原因及解决办法

核心原因

你在deps.edn的:test别名配置中,使用了斜杠分隔的符号clacks/core-test引用命名空间,但Clojure中命名空间的标准分隔符是点(.),斜杠只是符号中的普通字符,这导致Clojure无法正确解析嵌套命名空间,进而找不到对应的测试文件。错误信息里提到找不到core_test相关文件,正是因为斜杠写法让Clojure错误地尝试加载顶级命名空间core_test,而非clacks.core-test。

具体修复步骤

  1. 修正deps.edn中的命名空间引用
    将:main-opts里的表达式改为点分隔的命名空间符号:
{:paths ["src"]
 :aliases {
           :test {:extra-paths ["test"]
                  :main-opts ["-e" "(require 'clacks.core-test) (clojure.test/run-tests 'clacks.core-test)"]}}}
  1. 移除测试文件中多余的run-test调用
    你的core_test.clj最后一行的(run-test alphabet-test)是多余的——clojure.test/run-tests会自动运行目标命名空间下的所有测试,且run-test需要传递测试var(如#'alphabet-test)而非符号,建议删除该行避免混淆。

修正后的core_test.clj:

(ns clacks.core-test
  (:require [clojure.test :refer [deftest is testing]]
            [clacks.core :refer [alphabet]]))

(deftest alphabet-test 
  (testing "Testing the alphabet"
    (is (map? alphabet) "Not a map!")
    (is (seq alphabet))))
  1. 验证类路径(可选)
    若问题仍存在,执行以下命令检查test目录是否被正确添加到类路径:
clj -M:test -Spath

输出结果中应包含你的本地test目录路径。

补充说明

Clojure命名空间与文件的映射规则:

  • 命名空间中的点(.)对应文件系统的目录分隔符
  • 命名空间中的连字符(-)对应文件名中的下划线(_)

你的目录结构和文件名完全符合规则,问题仅出在命名空间的引用写法上。

内容的提问来源于stack exchange,提问作者bugsyb

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.13 16:35:10