如何将测试映射到数字列表

时间:2010-05-16 23:25:21

标签: unit-testing clojure

我有一个带错误的函数:

user> (-> 42 int-to-bytes bytes-to-int)
42
user> (-> 128 int-to-bytes bytes-to-int)
-128
user> 

看起来我需要在转换回来时处理溢出...

最好写一个测试,以确保再也不会发生这种情况。 这个项目使用的是clojure.contrib.test-所以我写道:

(deftest int-to-bytes-to-int
  (let [lots-of-big-numbers (big-test-numbers)]
    (map #(is (= (-> %
                     int-to-bytes
                     bytes-to-int)
                 %))
         lots-of-big-numbers)))

这应该是测试转换为seq的字节然后再次在10000个随机数列表上产生原始结果。 理论上看起来不错?除了没有任何测试运行。

Testing com.cryptovide.miscTest

Ran 23 tests containing 34 assertions.
0 failures, 0 errors.
  • 为什么不进行测试?
  • 我该怎么办才能让他们跑步?

3 个答案:

答案 0 :(得分:5)

dorun + map => doseq

(doseq [x (big-test-numbers)]
  (is (= x (-> x int-to-bytes bytes-to-int))))

答案 1 :(得分:1)

使用are编写测试,完全无需编写map(或doseq)表达式。

答案 2 :(得分:0)

再次被懒虫咬伤了。在地图周围需要(dorun :) *脸红*