在Clojure中构建集成和单元测试的典型方法是什么? 到目前为止,我有一个test/
文件夹,它遵循我的src/
目录的结构。但我想将它们分解为单元测试和集成测试。Clojure - 集成测试组织
有没有推荐的策略?测试中的注释?子文件夹test/unit
和test/integration
?环境变量?
注:我的情况下,使用boot
而不是leiningen
它的事项
在Clojure中构建集成和单元测试的典型方法是什么? 到目前为止,我有一个test/
文件夹,它遵循我的src/
目录的结构。但我想将它们分解为单元测试和集成测试。Clojure - 集成测试组织
有没有推荐的策略?测试中的注释?子文件夹test/unit
和test/integration
?环境变量?
注:我的情况下,使用boot
而不是leiningen
它的事项
该组织是由你。您可以为集成测试创建单独的目录树,将单独的文件放在同一目录树中,或者在同一个测试源文件中进行单元测试和集成测试。
单元&集成测试之间的唯一真正的区别是
所以,无论哪种方式,所有的集成测试应该在每个功能^: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
(无法开机,我知道),规定:
:test-selectors { :default (complement :slow)
:slow :slow }
然后当您说lein run
时,标记为^:slow
的测试将被跳过,并且当您说lein run :all
时,将运行所有测试(包括“慢”测试)。
请注意,关键字:slow
没有什么特别之处。您可以替换您希望的任何关键字,例如:integration
。
我还没有使用boot
很多,但我认为有类似的技术可用。
据我所知,这不是在启动时存在的东西,但我喜欢这个想法。 – nha