gpt4 book ai didi

testing - Clojure - 集成测试组织

转载 作者:行者123 更新时间:2023-11-28 19:47:01 25 4
gpt4 key购买 nike

在 Clojure 中构建集成和单元测试的典型方法是什么?到目前为止,我有一个 test/ 文件夹,它遵循我的 src/ 目录的结构。但我想将它们拆分为单元测试和集成测试。

有推荐的策略吗?测试中的注释?子文件夹 test/unittest/integration?环境变量?

注意:我使用 boot 而不是 leiningen 以防万一

最佳答案

组织由您决定。您可以为集成测试创建单独的目录树,在同一目录树中有单独的文件,或者在相同的测试源文件中进行单元测试和集成测试。

单元测试和集成测试之间唯一真正的区别是

  1. 他们跑多长时间
  2. 对系统的其他部分进行额外设置(这也意味着它们运行起来更慢和/或更难)。

因此,无论哪种方式,所有集成测试都应该在每个函数上用 ^:integration 元数据进行标记。此技术对于“慢速”单元测试也很有用。

“慢速”测试可以像下面这样标记(使用 clojure.test.check 生成测试):

(tst/defspec ^:slow round-trip-bytes 9999
(prop/for-all [orig gen/bytes]
(let [string-b64 (b64/encode-bytes->str orig)
result (b64/decode-str->bytes string-b64) ]
(assert (every? b64/base64-chars (seq string-b64)))
(assert (types/byte-array? result))
(= (seq orig) (seq result)))))

然后在您的project.clj(我知道不是 Bootstrap )中,指定:

:test-selectors { :default    (complement :slow)
:slow :slow }

那么当你说 lein test 时,标有 ^:slow 的测试将被跳过,当你说 lein test :all all的测试(包括“慢速”测试)将运行。

请注意关键字:slow 没有什么特别之处。您可以替换任何您想要的关键字,例如 :integration

我没有经常使用boot,但我假设有类似的技术可用。

关于testing - Clojure - 集成测试组织,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41076040/

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