Leiningen执行lein test不运行Java JUnit测试用例如何解决?
Leiningen混合项目同时执行Clojure测试与Java JUnit测试方案
配置修改步骤
- 第一步:在
project.clj中添加测试profile配置,引入lein-junit插件与JUnit依赖,指定Java测试目录 - 第二步:配置
prep-tasks绑定执行逻辑,实现lein test自动串行执行Java编译、JUnit测试、Clojure测试
完整配置示例
(defproject example-service "1.0.0" :source-paths ["src/clj"] :java-source-paths ["src/java"] :test-paths ["test/clj"] :dependencies [;; 你的生产依赖,如org.clojure/clojure等 ] :profiles {:test {;; 引入lein-junit插件处理JUnit测试逻辑 :plugins [[lein-junit "1.1.9"]] ;; 添加JUnit依赖 :dependencies [[junit/junit "4.13.2"]] ;; 测试阶段追加Java测试目录为Java源码路径,用于编译 :java-source-paths ["test/java"] ;; 指定JUnit测试用例所在路径 :junit-paths ["test/java"] ;; 可选配置:JUnit执行参数,如输出详细日志、生成测试报告等 :junit-options ["--verbose"]}} ;; 配置lein test执行前的前置任务:先编译Java代码、运行JUnit测试 :prep-tasks ["javac" "junit"])
命令使用说明
- 执行
lein test:自动按顺序执行Java代码编译、JUnit测试、Clojure测试,任意环节失败都会终止执行并返回错误信息 - 执行
lein junit:仅运行Java JUnit测试用例 - 执行
lein test :only your-clj-test-namespace:单独运行指定Clojure测试,不会触发JUnit执行
注意事项
- 若使用JUnit 5,只需调整对应JUnit依赖版本,
lein-junit1.1.8及以上版本已原生支持JUnit 5 - 所有测试相关配置放在
:testprofile下,不会影响生产包的构建逻辑,避免测试代码被打入生产Jar包
内容的提问来源于stack exchange,提问作者Primordinal
相关产品推荐
相关产品推荐

