Scalatest中的BDD:规范与WordSpec和FlatSpec,我应该使用哪些?

时间:2011-12-16 16:52:43

标签: scala bdd scalatest

在Scalatest中,我对使用Spec与WordSpec的优缺点有点不清楚。我认为javadoc提供了一定程度的WordSpec与FlatSpec的比较,但我不知道Spec和WordSpec。

如果您对这两种语法感到满意,哪种情况会被视为“最佳做法”?

WordSpec是否是Spec的演变(如果有人认为BDD是TDD的演变)?或相反亦然?如果他们在这方面是完全平等的,那我为什么选择一个呢?

也许这是一个“宗教问题”,但即使是每一方都必须至少有一些优点和缺点,他们也想指出。我对听到这些论点非常感兴趣。

如果这是常见问题,我提前道歉:我在搜索中找不到任何关于此比较的内容。

1 个答案:

答案 0 :(得分:15)

Spec没有隐式转换,除了您使用Suite获得的默认转换,它将===放在所有内容上。 WordSpec有一些隐式转换,可以在字符串后放置单词,因此隐式转换冲突的风险稍大。

Spec允许无限嵌套。 WordSpec只提供3个嵌套级别。

Spec为您提供了更多自由度,您可以自由地构建规范文本(虽然没有FreeSpec那么多的自由)。 WordSpec对于如何构建文本非常规范。

WordSpec比Spec更加DSLish。有些人更喜欢这样。

如果人们没有偏好,我会将它们指向默认选项,因为它默认情况下隐含更少,更自由,更少DSL和更多嵌套,但主要是这个选择是品味问题。 / p>