我在某处读到 JBehave 实际上是 Cucumber 的 Java 等价物,而 Cucumber 是基于 Ruby 的。
有人可以描述它们之间的差异,提供链接吗?
JBehave 和 Cucumber 是完全不同的框架,尽管目的相同:验收测试。它们基于故事 (JBehave) 或功能 (Cucumber)。特征是从特定项目利益相关者的角度表达的故事的集合。在您的测试中,您指的是故事,通常是通过正则表达式匹配。
JBehave 是一个纯 Java 框架,而 Cucumber 是基于 Ruby 的。两者都是非常成熟的框架。您可以通过来自 Maven 的 Cuke4Duke Maven 插件使用来自 Java 的Cucumber ,但仍然存在语言不匹配,因为它继续在内部使用 Ruby,您需要在机器上安装这种语言及其基础设施(所谓的“gems”)运行你的测试。这可能很脆弱,并且语言不匹配会使调试复杂化并阻碍测试的性能。现在有一个 Cucumber 的纯 Java 实现,称为Cucumber-JVM。截至 2011 年 12 月,它尚未发布,但完全可用(编辑:1.0.0 版于 2012年 3 月 27 日发布). 这个新框架与 JBehave 非常相似,因为两者都具有原生 JUnit 支持。
下面是 Cucumber-JVM 和 JBehave 的对比。
相似之处:
JBehave 的优点/缺点:
Cucumber-JVM 的优缺点:
如果您从事 Java 项目,我会推荐 JBehave(如果您正在寻找出色的文档)或 Cucumber-JVM(如果功能支持或故事对您很重要)。
我尝试了这两个框架并选择了 Cucumber-JVM。
Cucumber JVM 是流行的 Cucumber BDD 工具的 Java 实现,如上述答案中所述。
JBehave 有许多额外的配置,可以根据您的喜好微调 BDD 工具。但是这些配置也带来了很大的复杂性。归根结底,我们正在走向敏捷,我们喜欢在工作中精益求精。您应该问自己的问题是,这些复杂的配置是否会为您的工作流程增加任何重要价值。即使没有像 Cucumber 或 JBehave 这样强大的工具,我也见过有人在做 BDD。有些人也创建了自己的工具。我的观察是,如果您需要 BDD 工具,Cucumber 几乎拥有您需要的所有功能。
想了解更多,可以看我写的这篇博文:JBehave Vs Cucumber JVM:比较与经验分享
PS 我觉得 Stackoverflow 不是最好的就工具提出主观问题的社区。无论如何,希望这个讨论对某人有用。
正如公认的答案所述,JBehave是纯 Java,而Cucumber是一个通用的 BDD 框架,用不同的语言实现,并且可以在各种不同的上下文中作为测试框架使用 - 请参见此处https://docs.cucumber.io /安装/。
如果您希望为 Java 项目实现 BDD 框架,那么您的比较应该主要在 JBehave 和 Cucumber-JVM(Cucumber 的纯 Java 实现)之间进行。
这份 2017 年 7 月的最新参考比较了 JBehave 和 Cucumber-JVM,并表明 cucumber-jvm 目前通常比 JBehave 更受欢迎(就当前活动和使用的程度而言)。这包括更积极地维护 Cucumber-JVM:
文章还在结论中指出:
据我了解,JBehave 正处于其生命周期的成熟阶段,而 Cucumber 仍处于成熟阶段,每天都有很酷的新功能。
这篇文章在以下几个方面给 Cucumber-jvm 的总体评分更高
本文比较的特性集总体上对 Cucumber-JVM 特性的评分更高,但是您可能赋予某些特性的权重将取决于您的特定需求:
这篇文章在以下方面对 Cucumber-JVM 的评价更高:
这篇文章在以下方面对 JBehave 的评价更高:
复合步骤不是 BDD/Gherkin 标准的功能。
...主要原因是,使用此功能的人经常会遇到杂乱无章的自动化代码,这些代码脆弱且难以维护。
这篇文章对 jbehave 和 Cucumber-JVM 的评分如下:
JBehave 特点:
不,实际上,黄瓜的 Java 等价物是Cucumber-JVM。您可能还需要查看此链接以了解这两个著名的 BDD 框架之间的区别。