首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >调试考查测试还是一般防御测试?

调试考查测试还是一般防御测试?
EN

Stack Overflow用户
提问于 2022-07-31 14:40:32
回答 2查看 101关注 0票数 0

下面是关于高茶调试的一小部分:https://cljdoc.org/d/lambdaisland/kaocha/1.69.1069/doc/8-plugins,我不明白。

是否有一种方法可以调试kaocha测试,或者至少有一种方法可以直接从REPL执行测试,以便我可以调试测试?

EN

回答 2

Stack Overflow用户

发布于 2022-07-31 16:56:17

不知道考查,但deftest宏只是通过在测试命名空间中传递给它的测试名称生成普通函数:

代码语言:javascript
复制
(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)))))

因此,您只需在任何地方调用它,只需导入测试名称空间:

代码语言:javascript
复制
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
票数 1
EN

Stack Overflow用户

发布于 2022-08-01 19:16:35

不是一个直截了当的答案,但我尝试了Kaocha &不像最初的Leiningen驱动测试那么喜欢它,尤其是lein-test-refresh插件。除了像在另一个答案中一样从REPL运行之外,您还可以从命令行运行所有测试或只运行一个测试。

使用测试刷新插件,计算机将监视您的源进行任何更改。在任何编辑器保存时,代码将被重新加载和重新编译,然后所有修改的测试都将被重新运行。测试通常在手指离开<enter>键之前完成。

您可以看到使用lein-test-refresh 这里的示例。以下是自述的摘录:

使用lein测试刷新运行单元测试

IMHO是lein测试刷新项目,它提供了在每次从编辑器中保存源文件时在Clojure中进行迭代开发、重新运行的单元测试的最佳方法。

代码语言:javascript
复制
> lein test-refresh

或者化名:

代码语言:javascript
复制
alias lctr="lein do clean, test-refresh"    # lctr => Lein Clean Test-Refresh

其结果是:

代码语言:javascript
复制
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表达式,并观察测试是否自动重新运行:

代码语言:javascript
复制
...
Testing tst.demo.core
result => "Hello, World! Again!\n"
...
Finished at 07:59:53.863 (run time: 0.034s)

请注意,所有测试都在34毫秒内重新运行(几乎是瞬时的),因为JVM已经启动,Clojure本身(加上库代码)已经编译完毕。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/73184205

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档