【问题标题】:What are the differences between BDD frameworks for Java? [closed]Java的BDD框架之间有什么区别? [关闭]
【发布时间】:2009-07-01 12:04:55
【问题描述】:

每个Behavior Driven Development (BDD) Java 框架的优缺点是什么?

例如,我找到了一些 here

如果我已经使用了模拟库(例如Mockito),那么使用 BDD 框架是否有意义?

【问题讨论】:

  • 请定义 BDD 或链接到定义
  • BDD = 行为驱动开发
  • 可惜没有得到更多答案!
  • 对于 Cuke4Duke 在我的赏金中阅读 cucumber-jvm。我还有 22 小时的时间来奖励赏金......

标签: java bdd


【解决方案1】:

我刚刚比较了三个 Java 的 BDD 框架。显然,我的发现的使用期限很短。

Concordion

  • 非常灵活
  • 非常漂亮的报告输出
  • 不错的插件框架
  • 记录不充分。我必须阅读源代码才能弄清楚(幸运的是它的质量非常好)。
  • fixture 似乎最终与 html 紧密耦合。

EasyB

  • 非常浅的学习曲线(即使对于非 Groovy 开发人员)
  • 极其强大的 DBUnit 集成
  • 显然不支持参数(导致非常模糊的故事或文本和代码之间的重复(编辑:实际上有,但它的文档被很好地隐藏了。)
  • 故事和代码紧密耦合(同一个文件)
  • 非常基本的报告输出
  • 无法让 IntelliJ 插件工作
  • 不活跃的社区(Maven 插件似乎已经被破坏了三个月 - 没有多少代码示例可供借鉴)

JBehave

  • 非常强大和灵活(例如,通过组合故事作为先决条件来减少样板)
  • 大量(如果是零散的)文档和示例
  • 对不同框架和环境的广泛(如果压倒性)支持
  • 故事文件与代码的出色分离
  • 看起来有一个非常活跃的社区,并且在网络上有更多的例子和讨论。
  • 相当陡峭的学习曲线(比 Concordion/EasyB 花了我 3-4 倍的时间才弄清楚)

我没有机会像我希望的那样试用 JDave 的 Cuke4Duke,但此时可能会推动 JBehave。

【讨论】:

  • +1:到目前为止最好的答案。添加链接。
【解决方案2】:

“利弊”对不同的人来说可能是不同的东西。我一般都会看看

  • 开发活动,例如可能是新版本,或者最后一个版本是 2 年前的版本。
  • 成熟度,例如它存在多长时间了,是否有教程甚至书籍可用。 (我不读这些书,这只是被收养的标志。)
  • 工具支持,例如是否有 Eclipse 插件、Ant 支持等
  • 依赖的大小,我不喜欢自带一切的框架。例如我想自己选择我的模拟框架。
  • 某种许可,这对我来说很重要,因为我工作的公司有法律条款。
  • 与相关工具的兼容性,例如是否使用 Gherkin 语言。

我从一些框架中了解了

  • Instinct :上次活动 2010 年 3 月,:ASF 许可证
  • JDave bad:带有 matchers 和 mocks,good:最后一次活动 2011 年 1 月,ASF 许可证
  • easyb 不好:上次活动 2010 年 10 月,不确定:它使用 Groovy。这可能没问题,但在我的情况下会成为采用的问题。
  • beanspec 糟糕:2007年只有一个版本,这已经死了
  • bdoc 糟糕:上次活动 2010 年 1 月,不确定:看起来好像是另一种方式,从代码创建报告。
  • spock 不好:可能有点极端,这是一个完整的测试框架,不只是BDD,:很活跃,很酷。
  • jbehave,Java 中所有 BDD 的“母亲”,糟糕:非常强大 = 复杂、不兼容的许可证(对我来说),几乎每个测试库都带有更多,:基于 RSpec,因此兼容,eclipse 插件,maven 集成,非常活跃的社区
  • ginkgo4j,一个用于 Java 的 BDD 框架,同样基于 Ruby 的 RSpec,但使用 Java lambda(而不是注解)来允许您创建高度上下文相关、高度可读的测试。简单的。很强大。开源 Apache 2 许可证。

关于模拟:你肯定也需要一个模拟框架。 BDD 框架只是帮助您编写规范,但有些测试需要模拟或存根,尤其是。当您进行自上而下的设计时(从概览到细节)。

【讨论】:

  • jbehave 是 3 条款 BSD 许可:jbehave.org/license.html。我不知道为什么有人会对此提出异议?
  • Ramon,它是关于依赖关系的。其中有很多。可能都是 Apache 或者 BSD,我懒得去查了。
  • 良好的 BDD 框架更新列表behaviour-driven.org/Implementations
  • 您可以将JGiven 添加到该列表中。
【解决方案3】:

与 Java 一起使用的最佳 BDD 框架是什么?为什么?每个框架的优缺点是什么?

这是一个关于Concordion vs. Cucumber and Java based Acceptance Testing的有趣链接

我在这里找到了几个,但我不确定选择哪一个。

真的,看看上面提到的那个。

如果我已经使用了模拟库(例如 Mockito),那么使用 BDD 框架是否有意义?

简短的回答:是的,当然。实际上,使用 BDD 框架的验收测试和使用模拟对象的单独单元测试是如此不同,以至于我并没有真正得到这个问题。验收测试是黑盒测试,测试用于验证业务功能是否正常工作,最好由业务分析师编写。使用 mocks 隔离的单元测试是白盒测试,测试用于验证单元是否正常工作并且是由开发人员编写的。两者都很有用,但它们的用途完全不同。换句话说,使用 Mockito 根本不会取代 BDD 框架,反之亦然。

【讨论】:

【解决方案4】:

我最初使用普通 jUnit 进行 BDD,但最近我一直在查看 JDave,因为它与我使用 jUnit 所做的几乎 1:1。它还运行在 jUnit 之上,因此它已经可以在 Eclipse 上运行,并且还易于配置以在 Hudson 等持续集成系统上运行。无法与其他人进行比较,但到目前为止我对 JDave 的体验一直很好。

哦,使用模拟绝不是愚蠢的想法!它们与 TDD/BDD 无关,它们的目的是总体上减轻测试负担。

【讨论】:

    【解决方案5】:

    哇,我看到这个话题很热门,很多好的答案......

    除了讽刺之外,我最近发现了 BDD 并发现这个概念很有趣。嘿,它强制编写测试......和规范!尽管看起来令人惊讶,但后者也可能在某些项目中缺失......或者只是缺乏 BDD 强制引入的精度。

    Behavior Driven Development 文章总结了概念并链接到一些优秀文章(如 Andrew Glover 所写的文章)。此外,对于这个线程的主题,它提供了一个相当全面的(我想是)BDD 框架列表,其中很多是用于 Java 的。
    并没有解决选择框架的问题,但至少可以简化搜索...

    由于 BDD 严重依赖测试代码的可读性,我认为一个好的选择标准是查看快速教程/教程,看看哪个更适合您的风格。 其他标准可能是框架利用您熟悉的工具(单元测试、模拟)、IDE 的使用等。

    【讨论】:

      【解决方案6】:

      我尝试了Cucumber-JVM(之前开发为 Cuke4Duke)。 它使用 Gherkin DSL 进行规范,以纯文本形式存储。

      它可以作为 JUnit 测试运行。所以开始使用它的唯一问题是让业务人员或产品经理读/写 Sources 中的 .features。

      结果

      【讨论】:

        【解决方案7】:

        我的团队使用JBehave 已有一段时间了。它使用纯文本文件来存储规范。然后通过某种方法执行每个步骤(Given、When、Then),该方法可以从步骤中提取参数。场景可以缩进并且格式正确,这对客户想要验证它们很有帮助。

        也有一些问题。我们已经切换到 Java 6。有时在执行过程中会忽略某些场景步骤。找出错误所在可能会造成很多麻烦。

        【讨论】:

        【解决方案8】:

        我的团队成功地使用了 JBehave - 我们在使用 EasyB 后转移到它,发现纯文本场景文件更易于处理。

        【讨论】:

          猜你喜欢
          • 2011-05-28
          • 1970-01-01
          • 2011-04-25
          • 1970-01-01
          • 2010-12-25
          • 2020-08-18
          • 2014-09-21
          • 2015-10-08
          • 2011-07-01
          相关资源
          最近更新 更多