在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