下面是关于高茶调试的一小部分:https://cljdoc.org/d/lambdaisland/kaocha/1.69.1069/doc/8-plugins,我不明白。
是否有一种方法可以调试kaocha测试,或者至少有一种方法可以直接从REPL执行测试,以便我可以调试测试?
发布于 2022-07-31 16:56:17
不知道考查,但deftest宏只是通过在测试命名空间中传递给它的测试名称生成普通函数:
(require '[clojure.test :as t])
(require '[clojure.walk :as w])
(w/macroexpand-all '(t/deftest a
(println "before test")
(t/is 1 1)
(println "after test")))
;;=> (def a (fn* ([] (clojure.test/test-var (var a)))))因此,您只需在任何地方调用它,只需导入测试名称空间:
user=> (ns my-tests)
nil
my-tests=> (require '[clojure.test :as t])
nil
my-tests=> (t/deftest some-test (let [x 101] (println "x is " x) (t/is x 101)))
#'my-tests/some-test
my-tests=> (in-ns 'user)
#object[clojure.lang.Namespace 0x4c98a6d5 "user"]
user=> (my-tests/some-test)
;;=> x is 101
nil发布于 2022-08-01 19:16:35
不是一个直截了当的答案,但我尝试了Kaocha &不像最初的Leiningen驱动测试那么喜欢它,尤其是lein-test-refresh插件。除了像在另一个答案中一样从REPL运行之外,您还可以从命令行运行所有测试或只运行一个测试。
使用测试刷新插件,计算机将监视您的源进行任何更改。在任何编辑器保存时,代码将被重新加载和重新编译,然后所有修改的测试都将被重新运行。测试通常在手指离开<enter>键之前完成。
您可以看到使用lein-test-refresh 这里的示例。以下是自述的摘录:
使用lein测试刷新运行单元测试
IMHO是lein测试刷新项目,它提供了在每次从编辑器中保存源文件时在Clojure中进行迭代开发、重新运行的单元测试的最佳方法。
> lein test-refresh或者化名:
alias lctr="lein do clean, test-refresh" # lctr => Lein Clean Test-Refresh其结果是:
Testing _bootstrap
-------------------------------
Clojure 1.10.1 Java 13
-------------------------------
Testing tst.demo.core
result => "Hello, World!\n"
Ran 4 tests containing 6 assertions.
0 failures, 0 errors.
Passed all tests
Finished at 07:56:48.252 (run time: 6.709s)在此实例中,测试输出在打印经过的时间后暂停,并等待在任何文件更改后重新运行。例如,通过添加单词“demo.core!”,对名称空间进行简单的更改!到println表达式,并观察测试是否自动重新运行:
...
Testing tst.demo.core
result => "Hello, World! Again!\n"
...
Finished at 07:59:53.863 (run time: 0.034s)请注意,所有测试都在34毫秒内重新运行(几乎是瞬时的),因为JVM已经启动,Clojure本身(加上库代码)已经编译完毕。
https://stackoverflow.com/questions/73184205
复制相似问题