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

Leiningen无法找到额外测试文件(CIDER可正常运行)——求助

解决lein test无法运行测试的问题

问题根源

Clojure严格遵循命名空间与文件路径的映射规则:

  • 命名空间中的连字符-,对应文件/目录名里的下划线_
  • 文件/目录名里的下划线_,对应命名空间中的连字符-
  • 目录结构直接对应命名空间的层级(用.分隔)

你的测试文件test/stack_machine/sm_test.clj的命名空间是sm-test,既没有对应父目录stack_machine的命名空间部分,也不符合路径与命名空间的映射规则,导致Lein无法正确找到该文件对应的命名空间。CIDER能运行是因为它已在编辑器中直接加载了文件,不依赖路径与命名空间的严格映射。

修复步骤

1. 修正测试文件的命名空间

打开test/stack_machine/sm_test.clj,将命名空间从sm-test改为stack-machine.sm-test:

(ns stack-machine.sm-test  ;; 修正后的命名空间,对应目录stack_machine和文件sm_test.clj
  (:use [stack-machine.stack])
  (:require [clojure.test :as t]))

(t/deftest test-test-itself
  (t/testing "tests in the namespace 'stack machine.'"
    (t/is (== 1 1.0))))

2. 验证映射规则

确认命名空间与文件路径的对应关系:

  • 目录test/stack_machine → 命名空间前缀stack-machine(下划线_转连字符-)
  • 文件sm_test.clj → 命名空间后缀sm-test(下划线_转连字符-)
  • 完整命名空间stack-machine.sm-test完全匹配test/stack_machine/sm_test.clj的路径

3. 运行测试

现在执行lein test,Lein就能正确找到并运行该测试命名空间。如果需要单独运行这个测试,可执行:

lein test stack-machine.sm-test

内容的提问来源于stack exchange,提问作者Reb.Cabin

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.31 16:30:46