2010-11-16 56 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