你怎么能"参数化"Clojure Contrib的测试?

Rob*_*ell 3 testing clojure test-is clojure-contrib

双方的JunitTestNG的循环遍历的输入参数集合,对他们的运行测试的机制.在Junit中,这是通过参数化注释支持的,而TestNG则使用@DataProvider.

如何使用test-is库编写数据驱动的测试?我尝试使用列表解析来遍历输入参数集合,但因为deftest是一个宏它的期待条款.

Art*_*ldt 8

从阅读有关Junit参数化测试的文章看来,一旦你超越了poiler板,参数化的一个很酷的部分就是它可以让你输入:

      return Arrays.asList(new Object[][] {
            { 2, true },
            { 6, false },
            { 19, true },
            { 22, false }
Run Code Online (Sandbox Code Playgroud)

并轻松定义四个测试.

在测试中是等效的(不需要样板代码)宏 are

(are [n prime?] (= prime? (is-prime n))  
     3 true
     8 false)
Run Code Online (Sandbox Code Playgroud)

如果您想将输入作为地图,那么您可以运行以下内容:

(dorun (map #(is (= %2 (is-prime %1)) 
            { 3 true, 8 false}))
Run Code Online (Sandbox Code Playgroud)

虽然are宏会产生更容易读取的输出.