【问题标题】:What are the differences between JBehave and Cucumber?JBehave 和 Cucumber 有什么区别?
【发布时间】:2011-12-18 18:40:58
【问题描述】:

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

谁能描述它们之间的区别并提供链接?

【问题讨论】:

    标签: cucumber bdd jbehave


    【解决方案1】:

    正如公认的答案所述,JBehave 是纯 Java,而Cucumber 是一个通用的 BDD 框架,用不同的语言实现,可以在各种不同的上下文中用作测试框架 - 请参阅此处 @987654323 @。

    如果您希望为 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

    【讨论】:

      【解决方案2】:

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

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

      更多见解,你可以阅读我写的这篇博文:JBehave Vs Cucumber JVM: Comparison and Experience Sharing

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

      【讨论】:

      • 询问差异不是关于工具的主观问题。差异是客观的。询问优点和缺点可能是主观的,但这绝对不是问题的一部分——尽管它是某些答案的一部分——例如你的。
      • 不过,我发现您关于这个主题的固执己见的文章非常好!
      【解决方案3】:

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

      【讨论】:

        【解决方案4】:

        JBehave 和 Cucumber 是完全不同的框架,尽管目的相同:验收测试。它们基于故事 (JBehave) 或功能 (Cucumber)。特征是从特定项目利益相关者的角度表达的故事的集合。在您的测试中,您指的是故事,通常是通过正则表达式匹配。

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

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

        相似之处:

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

        JBehave 的优点/缺点:

        • 专业版非常好的文档
        • 专业版测试结果的 HTML 格式非常好
        • 缺点只支持故事,不支持功能

        Cucumber-JVM 的优缺点:

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

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

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

        【讨论】:

        • 您好 cgleissner,非常感谢。确实,一份详细的报告帮助我理解。再次感谢您的努力。 +1 问候,
        • 我不得不从 Cucumber 切换到 JBehave,因为 Sonar 工具不支持 Cucumber-JVM。
        • 很好的答案,很好的解释
        • 为什么 JBehave 有故事而不是功能是一个缺点? JBehave 故事和 Cucumber 特性都是场景的集合,因此它们在功能上是相同的。 “故事”这个名字似乎不太好,但这没什么大不了的。
        • Cucumber-JVM 中有一个 HTML 输出,但 JBehave 让您完全自定义报告。 Freemarker 模板允许您使用自己的 JS、CSS、图像等。
        猜你喜欢
        • 1970-01-01
        • 2012-07-30
        • 2022-08-23
        • 1970-01-01
        • 2010-10-02
        • 2011-12-12
        • 2010-09-16
        • 2012-03-14
        • 2012-02-06
        相关资源
        最近更新 更多