27

不要误会我的意思。我认为这两个项目都很棒。

但是作为 php 和 ruby​​ 开发人员,我想知道是否有任何令人信服的理由,除了可能的语言障碍之外,为什么即使在使用 php 或某些 php 框架时,为什么还要为BDD选择Behat而不是Cucumber(使用cuke4php) 。

4

3 回答 3

76

我是 Behat 开发人员。

为什么我开发 Behat 而不是 Cucumber 定制:

  1. 速度。没有简单的方法可以从 Ruby 代码引导/运行 PHP。这意味着您需要实现电线/代理和其他东西,这会使您的测试变得异常缓慢。较慢的测试不是测试,它只是吞噬客户资金的代码。
  2. 可扩展性。真正了解 Ruby 的 PHP 开发人员很少。这是一个很难使用的工具,很多人不明白!为 Cucumber 编写的所有示例都是 Ruby 代码,您甚至无法查看 Cucumber 源代码,因为假设您不了解 Ruby。这就像您只需要一辆出租车时购买一艘潜艇。

在功能方面,Behat 和 Cucumber 几乎相同(我一直在努力实现这一点)。但是从 PHP 开发人员的角度来看,在速度/可扩展性/逻辑方面 - Behat 更好,因为它是一个快速且干净的原生 PHP 工具。Behat 不是 Cucumber 端口,正如您可能首先想到的那样,它完全是基于 PHP 5.3 构建的。Behat 正在尝试使用其输入读取(功能)和输出格式(格式化程序)来模拟 Cucumber,但它不是 Cucumber 端口(PHP 中没有 Ruby 语法结构)。

于 2011-02-09T16:29:23.163 回答
2

这里解释了您可能需要 Behat 的另一个原因:https ://cucumber.io/blog/bdd/when-cucumbers-go-bad/

如果您有 PHP 项目,您可能希望为内部测试(领域层、应用层)创建上下文。

于 2015-05-19T13:34:09.500 回答
0

我想在这个主题上投入两分钱,并给出一个解决专业环境中各种用例的答案。

如果您正在与其他开发人员一起使用主要用 PHP 编写的代码库,那么优势归结为您的同事。

如果您的团队更喜欢 PHP,因为这是编写代码库的内容,并且人们在上下文切换到不同的编程语言时遇到麻烦或烦恼(根据我的经验,大多数人都是这种方式),那么最好适应您的团队并使用贝哈特。人们会减少抱怨并(希望)做得更多。

如果您的团队精通多种语言,并且大多数人在使用 Ruby(黄瓜)进行验收测试和使用 PHP 进行其他一切之间切换没有问题,请使用最适合该工作的语言。Ruby 比 PHP 更具表现力,因此 cucumber 可以说是更好的选择。

如果您的团队更喜欢 PHP 而不是 Ruby,那么请选择 Behat。本机兼容性确保了表现力并避免了怪异,此外它更快。

于 2019-03-26T15:18:11.933 回答