JBehave和Cucumber有什么区别?

时间:2011-10-31 14:03:25

标签: cucumber bdd jbehave

我在某处读到JBehave实际上是与Cucumber相当的Java,而Cucumber基于Ruby。

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

4 个答案:

答案 0 :(得分:100)

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

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

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

相似点:

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

JBehave的优点/缺点:

  • 专业非常好的文档
  • Pro 非常好的测试结果HTML格式
  • Con 仅支持故事,而非功能

Cucumber-JVM的优点/缺点:

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

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

我尝试了两个框架,然后选择了Cucumber-JVM。

答案 1 :(得分:3)

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

答案 2 :(得分:3)

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

JBehave有许多其他配置可根据您的喜好微调BDD工具。但是这些配置也变得非常复杂。在一天结束时,我们正在走向敏捷,我们喜欢在工作中精益求精。您应该问自己的问题是这些复杂的配置是否为您的工作流程增加了任何重要价值。即使没有像Cucumber或JBehave这样强大的工具,我也看到人们在做BDD。有些人也创造了自己的工具。我的观察是,如果你需要BDD工具,Cucumber几乎拥有你所需要的所有功能。

有关更多见解,您可以阅读我撰写的这篇博客文章:JBehave Vs Cucumber JVM: Comparison and Experience Sharing

P上。 S.我觉得Stackoverflow不是最好的社区,可以询问关于工具的主观问题。无论如何,希望这个讨论对某人有用。

答案 3 :(得分:1)

正如公认的答案所述,JBehave是纯Java,而Cucumber是一种通用的BDD框架,它以不同的语言实现,并且可以在各种不同的上下文中用作测试框架-参见此处https://docs.cucumber.io/installation/

如果您要为Java项目实现BDD框架,则您的比较应该主要在JBehave和Cucumber-JVM(Cucumber的纯Java实现)之间进行。

以下是2017年7月的最新参考资料,比较了JBehave和Cucumber-JVM,并指出,相对于JBehave,cumber-jvm当前通常(在当前活动程度和用法)。这包括更积极地维护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 Expression支持
  • 该文章对JBehave的以下评分较高:

    • 外部数据支持
    • 复合步骤(在Cucumber-JVM中,它的支持度较低,带有以下说明):
    •   

      复合步骤不是BDD /小黄瓜标准的功能。

    •   

      ...主要的原因是,使用此功能的人员经常会遇到混乱且难以维护的混乱的自动化代码。

  • 以下各项对jbehave和Cucumber-JVM的评级相同:

    • 背景和挂钩
    • 绑定到代码(注释)

JBehave功能:

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