其他語言有基於屬性的測試庫,如Haskell QuickCheck。 Clojure spec與這些庫有什麼不同?或者它只是一個基於財產的測試框架Clojure?Clojure規範與基於屬性的測試庫(如Haskell QuickCheck)有何區別?
回答
用於QuickCheck的Clojure的模擬將是test.check。 Clojure.spec依賴test.check進行生成性測試,但spec只能用於測試。
Test.check提供了生成和基於屬性的測試工具。 Clojure.spec允許您爲數據編寫規範,並且可以自動從這些規範中創建生成器。單獨使用test.check,你需要手動創建非平凡的生成器。隨着clojure.spec,發電機可以(有一些例外)從您的規格派生。
(s/def ::my-spec string?) ;; a trivial spec, any string will do
(sgen/sample (s/gen ::my-spec)) ;; create a generator from spec and get samples
;;=> ("" "P" "B" "" "qV" "im4P" "Zf" "" "rL24" "wAV7z")
這些發生器可用於產生用於其中要測試屬性的函數的輸入數據。您可以使用test.check編寫基於屬性的測試,也可以使用clojure.spec爲函數編寫一些基於屬性的測試。如下是一個字符串,並返回一個函數的例子了「翻番」的字符串:
(defn doubler [s] (str s s))
(s/fdef doubler
:args (s/cat :s string?)
:ret string?
:fn (fn [{:keys [args ret]}]
(= (* 2 (count (:s args))) (count ret))))
(stest/check `doubler)
的s/fdef
規範定義的性能我們從功能想:它接受一個字符串,返回一個字符串,返回的字符串應該是輸入的兩倍。我們使用check
來確保這些屬性適用於一堆隨機生成的輸入。
從[test.check](https://github.com/clojure/test.check)區分spec是什麼只有它能夠自動創建測試生成器?這也是從QuickCheck中區分出的規格嗎?您能否介紹一些測試以外的規格使用示例? – dilvan
沒有理由將* clojure.spec與test.check或任何其他基於屬性的測試庫進行比較;它具有超出測試的許多用途和用途,其核心是爲數據結構編寫*規範*。鏈接的概述很好地解釋了這一點,鏈接的指南有很多測試以外的規範使用的例子。 –
當你說數據結構的規範,你的意思是人類消費?或者有什麼程序可以用它來做(除了測試)? – dilvan
- 1. 如何讓Haskell QuickCheck 2.4增加#測試?
- 2. 基於屬性的測試和變異測試有什麼區別?
- 3. QuickCheck如何測試每個樣本的所有屬性
- 4. 使用QuickCheck測試Haskell矩陣
- 5. 如何使用quickcheck顯示失敗測試屬性的原因?
- 6. 如何使用QuickCheck測試與數據庫相關的功能?
- 7. 測試和規格有什麼區別?
- 8. 負面的基於屬性的測試
- 9. Clojure:測試運行屬性的序列
- 10. 基於元素屬性的ClearCase配置規範選擇
- 11. Haskell,IO,monads,quickcheck
- 12. 在QuickCheck屬性中生成新的測試數據
- 13. Modernizr的佔位符測試和輸入屬性測試有什麼區別?
- 14. Scala:基於屬性的測試:如何在編寫測試時知道所有的必要測試用例
- 15. 如何在測試基於CamelSpringTestSupport的測試期間設置屬性值
- 16. Haskell - 在QuickCheck的幫助下進行Parsec測試
- 17. 規範化屬性
- 18. 針對多種類型測試QuickCheck屬性?
- 19. Haskell與erlang:foldl的區別?
- 20. 簡單的驗收測試與規範
- 21. Haskell Cabal QuickCheck集成
- 22. 集成測試與rspec的正常測試有什麼區別?
- 23. JPA和JDO規範有什麼區別?
- 24. JavaFX:基於屬性的實體與基於屬性的包裝
- 25. 通過測試規範到另一個測試規範
- 26. 整合clojure規範
- 27. 基於屬性的檢查與基於元組的檢查
- 28. 基於模型的測試和模型驅動的測試之間的區別
- 29. Haskell QuickCheck最佳實踐(尤其是在測試類型類時)
- 30. qmake:測試當前規範
另請參閱「什麼是規格」https://stackoverflow.com/a/38518300/1327651 – nha