Rob*_*ell 3 testing clojure test-is clojure-contrib
双方的Junit和TestNG的循环遍历的输入参数集合,对他们的运行测试的机制.在Junit中,这是通过参数化注释支持的,而TestNG则使用@DataProvider.
如何使用test-is库编写数据驱动的测试?我尝试使用了列表解析来遍历输入参数集合,但因为deftest是一个宏它的期待是条款.
从阅读有关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宏会产生更容易读取的输出.