我正在學習Scala。我看到那裏有2個測試框架,ScalaTest和Specs。我唯一的問題是,我不能用語言來決定哪個更好。 此外,我習慣於在代碼之前編寫測試,目前我還沒有清楚的知道如何在函數式編程中做到這一點。 理想情況下,我想以TDD方式學習Scala,有沒有關於它的任何資源?與TDD學習Scala
回答
有一個功能koan可能是你正在尋找的東西。從Java波塞 迪克·沃爾開始了一個github上的項目:
https://github.com/relevance/functional-koans/tree/scala
你需要行家通過mvn package
啓動它。
還有一個公案:
感謝@MikeHoss!
ScalaTest是更豐富的功能和靈活的兩個框架。
說了這麼一句......我目前對Specs的支持,他們似乎在跟上最新的Scala版本做得更好,而且IntelliJ集成似乎也更好。
對於你來說,規格也有一個優勢,就是要有一個更小的API來學習。
剛剛2.8發佈後,ScalaTest 1.2發佈了最終版,這與Scala 2.8一起工作得很好。凱文以某種方式不知道ScalaTest 1.2與Scala 2.8合作。 ScalaTest 1.3與Scala 2.8一起工作,是截至2011年3月20日的最新版本。 – 2011-03-20 20:34:27
在我寫這個答案的時候,我最近一直在與很多2.8版本的候選人合作,這些規格跟蹤非常密切。我還記得因爲ScalaTest依賴項而無法更新項目的挫敗感。從那以後,ScalaTest開始通過Maven跟蹤它自己的依賴關係,所以應該可以快速發佈,並且我將來也不會看到這會影響我(很容易知道,使用2.9.0即可發佈候選版本) – 2011-03-21 09:14:02
因此,測試框架。有關於這個other questions,但我想指出,也有ScalaCheck。 ScalaCheck功能不如Specs和ScalaTest,但另一方面,Specs和ScalaTest可以與它集成。我個人更喜歡使用ScalaCheck,這與您習慣的單元測試框架可能非常不同。這種差異可以很好地阻止你以面向對象的方式陳述測試。
現在,您的問題的主要關注:是否有類似於TDD的Scala教程?我不知道任何,但answer約functional koans似乎接近你想要的。
我發現scalacheck對算法和單個單元的低級調整更有用,但不是那麼有用用於BDD和更高級別的規格。 – 2010-11-16 17:14:02
@Kevin然後你沒有正確地建立發電機! :-) – 2010-11-16 17:49:50
- 1. 學習來源TDD
- 2. 如何用Ruby學習TDD?
- 3. 學習Python或Scala?
- 4. 試圖學習TDD - 不太好
- 5. 關於學習TDD的問題
- 6. 學習沒有Java的Scala
- 7. 用於學習與asp.net MVC 3 TDD的資源3
- 8. 在練習TDD(單元測試)時學習OpenGL
- 9. 深度學習與機器學習
- 10. 我的算法與TDD一起練習
- 11. Theano學習與門
- 12. 我應該遵循哪些博客學習TDD?
- 13. 用一個簡單的例子學習TDD
- 14. 使用Rails學習TDD的最佳資源
- 15. 學習Java 5與Java 7?
- 16. Scikit學習:preprocessing.scale()與preprocessing.StandardScalar()
- 17. 學習JavaScript與jQuery的
- 18. 問題與機器學習scikit在Python學習
- 19. 學習Python練習
- 20. Q學習與時間差異與基於模型的強化學習
- 21. 強化學習 - 從餘暉TD學習
- 22. 機器學習在Python:scikit學習/ Pybrain
- 23. Node.js學習指南或學習計劃
- 24. Q學習代理的學習率
- 25. 在學習JQuery之前學習JavaScript?
- 26. 學習版本控制,並學習它
- 27. 分享點2010學習項目學習
- 28. 傳統TDD與接受TDD
- 29. 用於學習TDD和在Windows 7上使用Rails進行TDD設置的資源?
- 30. 學習序言練習2.3
此公約對我來說不太清楚:) – Uberto 2010-11-16 14:21:40
@uberto,從我可以收集的內容來看,'函數式koans'似乎是您可以用來學習函數式編程的練習,因此您會得到一個失敗的測試,並且必須通過測試。邁克爾,這是對的嗎? – 2010-11-16 14:54:16
是的,對。有一系列單元測試的項目設置。爲了取得進展,您必須更改當前失敗的單元測試以使其通過。然後下一個測試失敗,你必須學習新的東西。第一個單元測試是微不足道的:'assert(false)//應該是真的' – 2010-11-17 06:20:28