如何运行测试定义在苹果酒中defn的attr映射?

How to run tests defined in attr map of defn in cider?

在 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 来实现,因为无论您添加什么,都必须有一个 'top level form' (doc).

我是不是遗漏了什么,或者它根本不受支持?

如果您想在这样的定义上调用 cider-test-run-test,只需将 defn 添加到 cider-test-defining-forms

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