我正在学习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