首页 > 解决方案 > 如何运行在苹果酒中定义的 attr 映射中定义的测试?

问题描述

在 Spacemacs 中使用 Cider,我似乎找不到运行在 defn 的属性映射中定义的测试的方法。以这个函数定义为例:

(defn contains-duplicates-a?
  "checks if a vector of strings contain duplicates"
  {:test #(do
            (is (contains-duplicates-a? ["aa" "aa"]))
            (is (not (contains-duplicates-a? ["aa" "aaa"])))
            (is (not(contains-duplicates-a? ["ba" "ab"])))
            (is (not (contains-duplicates-a? ["abcde" "xyz" "ecdab"]))))}
  [word-vector]
  (not(=
        (count word-vector)
        (count (distinct word-vector)))))

这种编写单元测试的风格在我的公司相当普遍,并且得到我们最常见的 IDE 设置(IntelliJ + Cursive)的支持。我们喜欢让单元测试接近代码。

我不确定它是否可以通过使用来实现cider-test-defining-forms,因为无论您添加什么,都必须有一个“顶级表单”(doc)。

我错过了什么,还是根本不支持?

标签: emacsclojuretddcider

解决方案


如果你想调用cider-test-run-test这样的 defn,只需添加defncider-test-defining-forms.

cider-test-run-ns-tests您还可以通过使用前缀参数在 CIDER 中运行在当前命名空间中定义的所有测试(包括您在此处完成的方式定义的测试) 。在当前稳定的 CIDER 中,这意味着您可以输入C-u C-c C-t nC-u C-c , n. 前缀参数 (Cu) 是防止 CIDER 尝试在典型的“${current.namespace}-test”命名空间中查找测试所必需的。


推荐阅读