gpt4 book ai didi

unit-testing - Clojure 相当于 Python doctest?

转载 作者:行者123 更新时间:2023-12-04 10:55:08 25 4
gpt4 key购买 nike

Python doctests 将简单的测试与源代码相关联(在 Python 中它们在函数文档中)。 More info and examples here .

Clojure 有没有类似的东西?

我知道 clojure.test 的单元测试,但正在寻找与源代码更紧密集成的东西(通常单元测试在不同的文件中;在这里,我希望在 defn 内部进行测试)。

找了一圈才发现this ,但它似乎非常不简单(测试是在实际文本中,如 Python - 当然扩展 defn 的宏会更可取?)。

或者也许有一些其他方法可以解决一般问题,那就是我有一些测试(通常是展示函数基本属性的简单事物),它们会更好地包含在文档中(我正在使用 marginalia )而不是单独的单元测试文件。

更新 这是一个例子:我有一个函数来计算从一个像素矩形到图像中心的(曼哈顿)距离(以像素为单位)。这听起来很简单,但由于“中心”含义的不同而变得复杂,例如对于侧面具有奇数或偶数像素的图像,或者您从块的哪个部分进行测量。所以我不得不写一些测试来让代码更直。现在我查看文档,如果文档包含这些测试,那真的是最好的,因为它们比文字更好地解释了函数的作用......

最佳答案

和元数据中的测试标志,http://clojure.org/special_forms

(defn
^{:doc "mymax [xs+] gets the maximum value in xs using > "
:test (fn []
(assert (= 42 (mymax 2 42 5 4))))
:user/comment "this is the best fn ever!"}
mymax
([x] x)
([x y] (if (> x y) x y))
([x y & more]
(reduce mymax (mymax x y) more)))

user=> (test #'mymax)
:ok
user=> (doc test)
-------------------------
clojure.core/test
([v])
test [v] finds fn at key :test in var metadata and calls it,
presuming failure will throw exception
nil

关于unit-testing - Clojure 相当于 Python doctest?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10890571/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com