java - 尝试获取 cljunit 中命名空间的 var 名称时出错

标签 java clojure

我正在处理一个包含 Java 类和 Clojure 文件的项目。目标是使用 java 测试 Clojure 文件。

我正在使用 Cljunit 来实现此目的:https://github.com/mikera/cljunit

我使用的代码如下:

public class DemoClojureTest extends ClojureTest {
@Override
                public List<String> namespaces() {
                    @SuppressWarnings("unused") ArrayList<String> ns=new ArrayList<String>();
                    ns.add("com.example.demo.helloWorld");
                    return ns;
                }

    }

clojure 文件 (helloWorld.clj) 是:

(ns com.example.demo.helloWorld
  (:use clojure.test))

(deftest test1
  (is (= 1 3)))

(deftest test2
  (is (= 2 2)))

当我尝试执行 DemoClojureTest 时,出现此错误:

尝试获取命名空间 [com.example.demo.helloWorld] 的变量名称时出错

java.io.FileNotFoundException: Could not locate com/example/demo/helloWorld__init.class or com/example/demo/helloWorld.clj on classpath: 
    at clojure.lang.RT.load(RT.java:432)
    at clojure.lang.RT.load(RT.java:400)
    at clojure.core$load$fn__4890.invoke(core.clj:5415)
    at clojure.core$load.doInvoke(core.clj:5414)
    at clojure.lang.RestFn.invoke(RestFn.java:408)
    at clojure.core$load_one.invoke(core.clj:5227)
    at clojure.core$load_lib.doInvoke(core.clj:5264)
    at clojure.lang.RestFn.applyTo(RestFn.java:142)
    at clojure.core$apply.invoke(core.clj:603)
    at clojure.core$load_libs.doInvoke(core.clj:5298)
    at clojure.lang.RestFn.applyTo(RestFn.java:137)
    at clojure.core$apply.invoke(core.clj:603)
    at clojure.core$require.doInvoke(core.clj:5381)
    at clojure.lang.RestFn.invoke(RestFn.java:408)
    at mikera.cljunit.core$get_test_var_names.invoke(core.clj:67)
    at clojure.lang.Var.invoke(Var.java:415)
    at mikera.cljunit.Clojure.getTestVars(Clojure.java:29)
    at mikera.cljunit.NamespaceTester.<init>(NamespaceTester.java:19)
    at mikera.cljunit.ClojureTester.<init>(ClojureTester.java:21)
    at mikera.cljunit.ClojureRunner.<init>(ClojureRunner.java:16)
    at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
    at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:39)
    at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:27)
    at java.lang.reflect.Constructor.newInstance(Constructor.java:513)
    at org.junit.internal.builders.AnnotatedBuilder.buildRunner(AnnotatedBuilder.java:29)
    at org.junit.internal.builders.AnnotatedBuilder.runnerForClass(AnnotatedBuilder.java:21)
    at org.junit.runners.model.RunnerBuilder.safeRunnerForClass(RunnerBuilder.java:59)
    at org.junit.internal.builders.AllDefaultPossibilitiesBuilder.runnerForClass(AllDefaultPossibilitiesBuilder.java:26)
    at org.junit.runners.model.RunnerBuilder.safeRunnerForClass(RunnerBuilder.java:59)
    at org.junit.internal.requests.ClassRequest.getRunner(ClassRequest.java:26)
    at com.intellij.junit4.JUnit4IdeaTestRunner.startRunnerWithArgs(JUnit4IdeaTestRunner.java:44)
    at com.intellij.rt.execution.junit.JUnitStarter.prepareStreamsAndStart(JUnitStarter.java:195)
    at com.intellij.rt.execution.junit.JUnitStarter.main(JUnitStarter.java:63)
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
    at java.lang.reflect.Method.invoke(Method.java:597)
    at com.intellij.rt.execution.application.AppMain.main(AppMain.java:120)

我做错了什么?

最佳答案

从堆栈跟踪来看,IntelliJ 测试运行程序要么使用不包含 Clojure 源文件的类路径运行测试,要么不将它们包含在构建中。

确保 Clojure 文件所在的文件夹位于“内容根目录”下,并在模块设置中标记为“源”或“测试源”文件夹。

关于java - 尝试获取 cljunit 中命名空间的 var 名称时出错,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19006567/

相关文章:

python - 为什么 Clojure 频率不比 Python collections.Counter 快?

clojure - Clojure 中的匿名宏

java - Tomcat sh脚本权限

java - Android Studio : Failed to resolve: com. google.android.gms :play-services:fp9. 0.0

Java FlyServer 飞对象空间

java - 在 java 中列出文件时实现超时

java - Clojure 找不到 native 类的 java 构造函数?

Clojure/Logic Pro

java - JOOQ 慢速代码生成

clojure - 为什么字符串格式化会导致转换异常?