Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/347.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
设置一个使用Clojure对纯Java库进行单元测试的环境_Java_Maven_Unit Testing_Clojure_Build Automation - Fatal编程技术网

设置一个使用Clojure对纯Java库进行单元测试的环境

设置一个使用Clojure对纯Java库进行单元测试的环境,java,maven,unit-testing,clojure,build-automation,Java,Maven,Unit Testing,Clojure,Build Automation,我必须编写一个纯Java库。但我想使用Clojure对其进行单元测试 所以我想建立这样的东西:两个项目存储库。Java代码本身,以及第二个Leiningen项目,该项目包括该库并对其运行单元测试 我做TDD,所以这是一个相当紧凑的迭代(即编写测试,编写代码以通过测试)。我可以在Emacs中同时打开两个项目的代码,但我想知道如何自动连接 例如,理想情况下,每当我进行“lein测试”时,它都会获取最新的Java代码,编译它(如果没有编译),将它拉到Clojure项目中,并在测试中使用它 我怎样才能做

我必须编写一个纯Java库。但我想使用Clojure对其进行单元测试

所以我想建立这样的东西:两个项目存储库。Java代码本身,以及第二个Leiningen项目,该项目包括该库并对其运行单元测试

我做TDD,所以这是一个相当紧凑的迭代(即编写测试,编写代码以通过测试)。我可以在Emacs中同时打开两个项目的代码,但我想知道如何自动连接

例如,理想情况下,每当我进行“lein测试”时,它都会获取最新的Java代码,编译它(如果没有编译),将它拉到Clojure项目中,并在测试中使用它

我怎样才能做到这一点?我目前有一个Lein project.clj文件,它引用了本地Maven存储库中的Java库。但我不确定Lein是否会从Maven自动更新,除非版本号发生变化,我不想每2或3分钟更新一次代码库的版本号。(至少,肯定不是手动操作。)


有人对此有经验吗?

您可以通过简单的java互操作来实现这一点。您不应该对本地文件(java或clojure)使用maven,而应该只对外部库使用maven

以下是一个示例:

Java代码: Clojure代码: 要运行: 因此clojure编译器通过
project.clj

:java-source-paths ["/home/alan/xpr/src"]
当您运行
lein test
时,它会将java源文件与已编译的java
*.class
文件进行比较,并在必要时重新编译java源文件。如果我们做出改变

“你好”->“你好,又来了!”在java源代码中,我们得到:

 > lein test
(:repositories detected in user-level profiles! [:user] 
See https://github.com/technomancy/leiningen/wiki/Repeatability)
Compiling 1 source files to /home/alan/clj/target/base+system+user+dev+test+test/classes
begin
Hello, again!
end

lein test user

Ran 0 tests containing 0 assertions.
0 failures, 0 errors.
因此,lein检测到源文件更改,并重新编译了java源文件


使现代化 我使用了Clojure/Java混合源代码。
只要克隆它,你就可以开始比赛了

您可以通过简单的java互操作来实现这一点。您不应该对本地文件(java或clojure)使用maven,而应该只对外部库使用maven

以下是一个示例:

Java代码: Clojure代码: 要运行: 因此clojure编译器通过
project.clj

:java-source-paths ["/home/alan/xpr/src"]
当您运行
lein test
时,它会将java源文件与已编译的java
*.class
文件进行比较,并在必要时重新编译java源文件。如果我们做出改变

“你好”->“你好,又来了!”在java源代码中,我们得到:

 > lein test
(:repositories detected in user-level profiles! [:user] 
See https://github.com/technomancy/leiningen/wiki/Repeatability)
Compiling 1 source files to /home/alan/clj/target/base+system+user+dev+test+test/classes
begin
Hello, again!
end

lein test user

Ran 0 tests containing 0 assertions.
0 failures, 0 errors.
因此,lein检测到源文件更改,并重新编译了java源文件


使现代化 我使用了Clojure/Java混合源代码。 只要克隆它,你就可以开始比赛了

 > lein test
(:repositories detected in user-level profiles! [:user] 
See https://github.com/technomancy/leiningen/wiki/Repeatability)
Compiling 1 source files to /home/alan/clj/target/base+system+user+dev+test+test/classes
begin
Hello, again!
end

lein test user

Ran 0 tests containing 0 assertions.
0 failures, 0 errors.