66

我在某处读到 JBehave 实际上是 Cucumber 的 Java 等价物,而 Cucumber 是基于 Ruby 的。

有人可以描述它们之间的差异,提供链接吗?

4

4 回答 4

105

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 的对比。

相似之处:

  • 开箱即用的 JUnit 支持
  • 纯Java
  • 快速地
  • 便于使用

JBehave 的优点/缺点:

  • Pro非常好的文档
  • Pro相当不错的测试结果的 HTML 格式
  • Con仅支持故事,不支持功能

Cucumber-JVM 的优缺点:

  • 专业支持功能
  • Con不支持并行 JUnit 测试。但是将与并行 Maven 3 构建一起使用。
  • 缺点缺乏文档
  • 缺点测试结果没有漂亮的 HTML 格式,除了 JUnit 自己的格式 (编辑:Cucumber-JVM 现在确实支持 HTML 输出)

如果您从事 Java 项目,我会推荐 JBehave(如果您正在寻找出色的文档)或 Cucumber-JVM(如果功能支持或故事对您很重要)。

我尝试了这两个框架并选择了 Cucumber-JVM。

于 2011-11-29T02:10:46.477 回答
4

Cucumber JVM 是流行的 Cucumber BDD 工具的 Java 实现,如上述答案中所述。

JBehave 有许多额外的配置,可以根据您的喜好微调 BDD 工具。但是这些配置也带来了很大的复杂性。归根结底,我们正在走向敏捷,我们喜欢在工作中精益求精。您应该问自己的问题是,这些复杂的配置是否会为您的工作流程增加任何重要价值。即使没有像 Cucumber 或 JBehave 这样强大的工具,我也见过有人在做 BDD。有些人也创建了自己的工具。我的观察是,如果您需要 BDD 工具,Cucumber 几乎拥有您需要的所有功能。

想了解更多,可以看我写的这篇博文:JBehave Vs Cucumber JVM:比较与经验分享

PS 我觉得 Stackoverflow 不是最好的就工具提出主观问题的社区。无论如何,希望这个讨论对某人有用。

于 2017-07-26T12:10:37.850 回答
4

正如公认的答案所述,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:

https://medium.com/agile-vision/jbehave-vs-cucumber-jvm-comparison-and-experience-sharing-439dfdf5922d

文章还在结论中指出:

据我了解,JBehave 正处于其生命周期的成熟阶段,而 Cucumber 仍处于成熟阶段,每天都有很酷的新功能。

这篇文章在以下几个方面给 Cucumber-jvm 的总体评分更高

  • 文档和社区
  • 功能(见下面我的注释)
  • 报告
  • GitHub 上的流行度、代码质量和当前活动
  • StackOverflow 上的活动

功能注意事项:

本文比较的特性集总体上对 Cucumber-JVM 特性的评分更高,但是您可能赋予某些特性的权重将取决于您的特定需求:

  • 这篇文章在以下方面对 Cucumber-JVM 的评价更高:

    • IDE 插件(语法高亮)
    • 格式化灵活性
    • Lambda 表达式支持
  • 这篇文章在以下方面对 JBehave 的评价更高:

    • 外部数据支持
    • 复合步骤(这在 Cucumber-JVM 中被评为低支持,具有以下解释性说明):
    • 复合步骤不是 BDD/Gherkin 标准的功能。

    • ...主要原因是,使用此功能的人经常会遇到杂乱无章的自动化代码,这些代码脆弱且难以维护。

  • 这篇文章对 jbehave 和 Cucumber-JVM 的评分如下:

    • 背景和钩子
    • 绑定到代码(注解)

JBehave 特点:

https://jbehave.org/reference/stable/features.html

于 2019-02-05T00:14:06.977 回答
3

不,实际上,黄瓜的 Java 等价物是Cucumber-JVM。您可能还需要查看此链接以了解这两个著名的 BDD 框架之间的区别。

于 2013-08-08T06:15:37.453 回答