JUnit和Clojure单元测试

mik*_*era 15 java testing junit unit-testing clojure

我正在创建一个包含Clojure和Java代码的库,并希望能够在整个代码库中运行单个测试JUnit套件.似乎这应该是可能的,因为它们都在JVM上运行并且有良好的Clojure/Java互操作.

但是,目前Clojure代码似乎更倾向于使用"(run-all-tests)"和朋友通过clojure.test API完成的单元测试.

有没有一种很好的方法将这些Clojure测试包装在某种包装中,以便可以从JUnit自动调用它们?

(当我自动说,我的意思是没有求助于编写JUnit测试用例的手动解决方案来包装并单独调用每个Clojure测试用例:-))

Psy*_*llo 3

run-all-tests最简单的方法是从单个 JUnit 测试中调用。您可以捕获输出并查看指示通过/失败/错误计数的最后一行。如果您看到失败或错误,则可以使 JUnit 测试失败。

但是,如果您希望与每个 Clojure 测试进行交互,则必须实现与 clojure.test 中的功能类似的功能。也就是说,对于每个命名空间中的每个值,查找存储在:test元数据值中的函数。该值就是您的测试函数。

test.clj的第 661-686 行很好地概括了如何在 Clojure 中存储和运行测试。