2010-11-16 121 views
10

我正在學習Scala。我看到那裏有2個測試框架,ScalaTest和Specs。我唯一的問題是,我不能用語言來決定哪個更好。 此外,我習慣於在代碼之前編寫測試,目前我還沒有清楚的知道如何在函數式編程中做到這一點。 理想情況下,我想以TDD方式學習Scala,有沒有關於它的任何資源?與TDD學習Scala

回答

7

有一個功能koan可能是你正在尋找的東西。從Java波塞 迪克·沃爾開始了一個github上的項目:

https://github.com/relevance/functional-koans/tree/scala

你需要行家通過mvn package啓動它。


還有一個公案:

http://www.scalakoans.org/

感謝@MikeHoss!

+0

此公約對我來說不太清楚:) – Uberto 2010-11-16 14:21:40

+0

@uberto,從我可以收集的內容來看,'函數式koans'似乎是您可以用來學習函數式編程的練習,因此您會得到一個失敗的測試,並且必須通過測試。邁克爾,這是對的嗎? – 2010-11-16 14:54:16

+0

是的,對。有一系列單元測試的項目設置。爲了取得進展,您必須更改當前失敗的單元測試以使其通過。然後下一個測試失敗,你必須學習新的東西。第一個單元測試是微不足道的:'assert(false)//應該是真的' – 2010-11-17 06:20:28

1

也許這會幫助你。這是另一個堆棧溢出成員的類似請求。

Unit testing Scala

+0

那裏也沒有真正的麻煩...... – Uberto 2010-11-16 14:11:22

1

ScalaTest是更豐富的功能和靈活的兩個框架。

說了這麼一句......我目前對Specs的支持,他們似乎在跟上最新的Scala版本做得更好,而且IntelliJ集成似乎也更好。

對於你來說,規格也有一個優勢,就是要有一個更小的API來學習。

+0

剛剛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

+0

在我寫這個答案的時候,我最近一直在與很多2.8版本的候選人合作,這些規格跟蹤非常密切。我還記得因爲ScalaTest依賴項而無法更新項目的挫敗感。從那以後,ScalaTest開始通過Maven跟蹤它自己的依賴關係,所以應該可以快速發佈,並且我將來也不會看到這會影響我(很容易知道,使用2.9.0即可發佈候選版本) – 2011-03-21 09:14:02

2

因此,測試框架。有關於這個other questions,但我想指出,也有ScalaCheck。 ScalaCheck功能不如Specs和ScalaTest,但另一方面,SpecsScalaTest可以與它集成。我個人更喜歡使用ScalaCheck,這與您習慣的單元測試框架可能非常不同。這種差異可以很好地阻止你以面向對象的方式陳述測試。

現在,您的問題的主要關注:是否有類似於TDD的Scala教程?我不知道任何,但answerfunctional koans似乎接近你想要的。

+0

我發現scalacheck對算法和單個單元的低級調整更有用,但不是那麼有用用於BDD和更高級別的規格。 – 2010-11-16 17:14:02

+0

@Kevin然後你沒有正確地建立發電機! :-) – 2010-11-16 17:49:50