gpt4 book ai didi

unit-testing - 如何测量每个命名空间运行 clojure 测试所花费的时间?

转载 作者:行者123 更新时间:2023-12-04 04:48:46 24 4
gpt4 key购买 nike

有没有一种方法可以检测代码并找出每个命名空间需要多少时间,或者唯一的方法是使用固定装置?

解决此类问题的好方法是什么?

最佳答案

您对命名空间列表使用 run-tests 的建议会奏效。

这是我编写的一个函数,用于循环 repl 中的所有 namespace ,重新加载它们,然后为每个 ns 运行测试。您可以根据自己的目的修改代码。您必须添加代码来捕获开始/结束时间并打印每个 ns 的耗时。

正如文档字符串所说,此代码假定命名空间设置如下:

    myproj.myfeat      ; main namespace
tst.myproj.myfeat ; testing namespace

所以只需根据设置的需要删除或修改带有 (symbol (str "tst."curr-ns)) 的部分。您可能希望使用 all-ns 获取所有 namespace 的列表,然后删除或忽略非测试 namespace 。祝你好运!

(defn ^:deprecated ^:no-doc test-all
"Convenience fn to reload a namespace & the corresponding test namespace from disk and
execute tests in the REPL. Assumes canonical project test file organization with
parallel src/... & test/tst/... directories, where a 'tst.' prefix is added to all src
namespaces to generate the cooresponding test namespace. Example:

(test-all 'tupelo.core 'tupelo.csv)

This will reload tupelo.core, tst.tupelo.core, tupelo.csv, tst.tupelo.csv and
then execute clojure.test/run-tests on both of the test namespaces."
[& ns-list]
(let [test-ns-list (for [curr-ns ns-list]
(let [curr-ns-test (symbol (str "tst." curr-ns))]
(println (str "testing " curr-ns " & " curr-ns-test))
(require curr-ns curr-ns-test :reload)
curr-ns-test))
]
(println "-----------------------------------------------------------------------------")
(apply clojure.test/run-tests test-ns-list)
(println "-----------------------------------------------------------------------------")
(newline)
))

关于unit-testing - 如何测量每个命名空间运行 clojure 测试所花费的时间?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40124675/

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