ScalaTest和Spock的比较

15
scalatest和spock有什么不同?它们各自的附加价值是什么?哪一个更适合行为驱动开发(BDD)?您能分享一些对此问题的看法吗?
我想开始BDD,我想在两者之间做出选择,因此我希望做一个明智的决定。因此,首先获取尽可能多的信息,特别是考虑到我是Java程序员,并且Scala似乎有一个重要的学习曲线。
欢迎提供建议、想法或经验回报。
非常感谢。
2个回答

33

简而言之,我建议使用ScalaTest来测试Scala代码,使用Spock来测试Java或Groovy代码。当然,也完全可以使用ScalaTest来测试Java代码。为什么不尝试使用这两个工具并选择你更熟悉的那一个呢?

免责声明:我是Spock的创建者。


2
Peter在这里非常慷慨。毫无疑问,Spock的特性是如此令人惊叹,以至于对我来说,它使所有测试框架都相形见绌。话虽如此,如果@Peter能够评论一下,确实Spock是否可作为Scala的测试框架,那将是很好的...因为我读到一篇旧帖子提到Spock的特性是与编译器相关的? - Beezer

6

虽然我同意Peter的答案,但我想从我的角度来看待这个问题。

ScalaTest和Spock都提供了流畅的BDD测试。然而,我发现Spock最好的特点是你可以创建一个单一的场景,并为其提供多组数据和预期结果。这非常类似于Cucumber的Scenario Outline,只是在单元测试级别上运行。

我找不到其他单元测试框架/库能够做到这一点。

总之,如果您需要为单个测试场景测试多个输入/输出,请使用Spock;否则,可以随意选择您感觉舒适的任何框架。


为了完整起见,jUnit也可以做到同样的事情,只是不太美观。请参考https://github.com/junit-team/junit4/wiki/parameterized-tests。 - Michal M
我认为不是这样的,参数化测试只允许每个单元测试类(在构造函数参数化中)有一个最大的场景。 在字段参数化中,你可以得到更多,但只会变得更丑陋。 - Wins
我同意。只是从理论上讲,jUnit确实具有这个功能,但实际上,它的不美观因素使得在那里使用它并不那么令人信服。 - Michal M
1
完全同意。然而,大多数开发人员会选择易于阅读的框架。毕竟,测试是活生生的文档。 - Wins

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接