Java的BDD框架之间有什么区别?[已关闭]

2022-08-31 08:58:34

Java的每个行为驱动开发(BDD)框架的优缺点是什么?

例如,我在这里找到了其中一些。

如果我已经在使用模拟库(例如Mockito)使用BDD框架是否有意义?


答案 1

我刚刚完成了对Java的三个BDD框架的比较。显然,我的发现有一个相当短的使用日期。

协和

  • 非常灵活
  • 非常漂亮的报告输出
  • 不错的插件框架
  • 记录不周。我不得不阅读源代码才能弄清楚(幸运的是它的质量非常好)。
  • 固定装置似乎最终可能会与html紧密耦合。

易B

  • 非常浅的学习曲线(即使对于非时髦开发人员)
  • 极其强大的 DBUnit 集成
  • 显然不支持参数(导致非常模糊的故事或文本和代码之间的重复(编辑:实际上有,但它的文档被很好地隐藏了。
  • 故事和代码非常紧密地耦合(同一文件)
  • 非常基本的报告输出
  • 无法让 IntelliJ 插件正常工作
  • 不活跃的社区(Maven插件似乎已经中断了三个月 - 没有太多的代码示例可以借鉴)

JBehave

  • 非常强大和灵活(例如,通过故事的构图作为先决条件来减少样板)
  • 大量(如果零散)文档和示例
  • 对不同框架和环境的广泛(如果压倒性)支持
  • 故事文件与代码的完美分离
  • 看起来有一个非常活跃的社区,在网络上有更多的例子和讨论。
  • 相当陡峭的学习曲线(我花了3-4倍的时间才弄清楚Concordian / EasyB)

我没有机会像我想要的那样尝试JDave的Cuke4Duke,但此时可能会推动JBehave。


答案 2

“利弊”对于不同的人来说可能是不同的事情。我通常看看

  • 开发活动,例如,可能是新版本还是最后一个版本已有2年的历史。
  • 成熟度,例如,它已经存在了多长时间,是否有教程,甚至可能是可用的书籍。(我不读这些书,这只是被收养的标志。
  • 工具支持,例如是否有Eclipse插件,Ant支持等
  • 依赖项的大小,我不喜欢自带所有内容的框架。例如,我想自己选择我的模拟框架。
  • 某种许可证,这对我来说很重要,因为我工作的公司有法律条款。
  • 与相关工具的兼容性,例如,它是否使用小黄瓜语言。

从一些框架中,我看了一下

  • 本能:最后一次活动 2010年3月,:ASF许可证
  • JDave:带有匹配器和模拟,:最后一次活动2011年1月,ASF许可证
  • easyb bad:最后一次活动 2010 年 10 月,不确定:它使用 Groovy。这可能没问题,但在我的情况下,这将是一个采用的问题。
  • 豆种规格不好:2007年只有一个版本,这个已经死了
  • bdoc bad:最后一次活动 2010 年 1 月,不确定:它看起来像是走另一条路,从代码创建报告。
  • spock不好:也许有点极端,这是一个完整的测试框架,不仅是BDD,:非常活跃,非常酷。
  • jbehave,Java中所有BDD的“母亲”,:非常强大=复杂,不兼容的许可证(对我来说),几乎每个测试库都附带更多,:基于RSpec,因此兼容,eclipse插件,maven集成,非常活跃的社区
  • ginkgo4j是Java的BDD框架,也基于Ruby的RSpec,但使用Java lambda(而不是注释)来允许您创建高度上下文,高度可读的测试。简单。非常强大。开源 Apache 2 许可证。

关于模拟:你肯定也需要一个模拟框架。BDD框架只是帮助你编写规范,但有些测试将需要模拟或存根,特别是当你设计自上而下(从概述到细节)时。


推荐