JBehave和黄瓜有什么区别?

我已经读过JBehave其实就是Cucumber的Java,而Cucumber是基于Ruby的。

有人可以描述它们之间的区别吗?

JBehave和黄瓜是完全不同的框架,虽然意味着相同的目的:验收testing。 他们基于故事(JBehave)或特征(黄瓜)。 一个特征是从一个特定的项目利益相关者的angular度来expression的一系列故事。 在您的testing中,您通常通过正则expression式匹配来引用这些故事。

JBehave是一个纯粹的Java框架,而Cucumber是基于Ruby的。 两者都是非常成熟的框架。 您可以通过Maven的Cuke4Duke Maven插件使用Java中的Cucumber ,但仍然存在语言不匹配的问题,因为它继续在内部使用Ruby,您将需要在机器上安装此语言及其基础结构(所谓的“gems”)运行你的testing。 这可能很脆弱,语言不匹配会使debugging复杂化,并妨碍testing的性能。 现在有一个名为Cucumber-JVM的纯粹的Cucumber的Java实现。 截至2011年12月,尚未发布,但完全可用(编辑: 版本1.0.0于2012年3月27日发布) 。 这个新的框架与JBehave非常相似,因为它们都具有原生的JUnit支持。

以下是Cucumber-JVM和JBehave的比较。

相似点:

  • JUnit支持开箱即用
  • 纯Java
  • 快速
  • 使用方便

JBehave的优点/缺点:

  • Pro非常好的文档
  • Pro很好的HTML格式的testing结果
  • 只支持故事,而不是function

黄瓜JVM的优点/缺点:

  • Pro支持function
  • Con不支持并行JUnittesting。 然而,将与平行的Maven 3构build。
  • 缺乏文件
  • Con没有漂亮的HTML格式的testing结果,除了JUnit自己的格式 (编辑:Cucumber-JVM现在支持HTML输出)

如果你在一个Java项目,我会build议JBehave(如果你正在寻找伟大的文档)或Cucumber-JVM(如果function的支持或故事对你很重要)。

我尝试了两个框架,并去了黄瓜JVM。

不,实际上,黄瓜的Java相当于Cucumber-JVM 。 您可能还需要检查此链接以了解这两个着名的BDD框架之间的区别。

Cucumber JVM是stream行的Cucumber BDD工具的Java实现,正如上面的答案中提到的那样。

JBehave有许多额外的configuration来根据您的喜好微调BDD工具。 但是这些configuration也是非常复杂的。 在一天结束的时候,我们正在走捷径,我们喜欢在工作中精益。 您应该从自己问的问题是,这些复杂的configuration是否为您的工作stream程增加了任何重要的价值。 即使没有像黄瓜或JBehave这样强大的工具,我也看到有人在做BDD。 有些人还创build了自己的工具。 我的观察是,如果你需要一个BDD工具,黄瓜几乎拥有你所需要的所有能量。

为了获得更多的见解,你可以阅读我写的博客文章: JBehave Vs黄瓜JVM:比较和经验分享

PS我觉得像Stackoverflow是不是最好的社区问工具的主观问题。 不pipe怎样,希望这个讨论对某个人有用。