Java 的每个行为驱动开发(BDD) 框架的优缺点是什么?
例如,我在这里找到了一些。
如果我已经使用了模拟库(例如Mockito ) ,那么使用 BDD 框架是否有意义?
我刚刚比较了三个 Java 的 BDD 框架。显然,我的发现有一个相当短的使用日期。
我没有机会像我希望的那样尝试 JDave 的 Cuke4Duke,但此时可能会推动 JBehave。
对于不同的人来说,“利弊”可能是不同的东西。我一般看看
我从一些框架中看到了
关于模拟:你肯定也需要一个模拟框架。BDD 框架只是帮助您编写规范,但有些测试需要模拟或存根,尤其是。当您自上而下设计时(从概述到细节)。
与 Java 一起使用的最佳 BDD 框架是什么?为什么?每个框架的优缺点是什么?
这是一个关于Concordion 与 Cucumber 和基于 Java 的验收测试的有趣链接
我在这里找到了几个,但我不确定该选择哪一个。
真的,看看上面提到的那个。
如果我已经使用了模拟库(例如 Mockito),那么使用 BDD 框架是否有意义?
简短的回答:是的,当然。实际上,使用 BDD 框架的验收测试和使用模拟对象隔离的单元测试是如此不同,以至于我并没有真正得到这个问题。验收测试是黑盒测试,测试用于验证业务功能是否正常工作,最好由业务分析师编写。使用 mocks 隔离的单元测试是白盒测试,测试用于验证单元是否正常工作并且是由开发人员编写的。两者都很有用,但它们的用途完全不同。换句话说,使用 Mockito 根本不会取代 BDD 框架,反之亦然。
我最初用普通的 jUnit 做我的 BDD,但我最近一直在看JDave,因为它与我用 jUnit 做的几乎是 1:1。它还运行在 jUnit 之上,因此它已经可以在 Eclipse 上运行,并且还易于配置以在 Hudson 等持续集成系统上运行。无法将其与其他人进行比较,但到目前为止我对 JDave 的体验一直很好。
哦,使用模拟绝不是一个愚蠢的想法!它们与 TDD/BDD 无关,它们的目的是总体上减轻测试负担。
哇,我看到这个话题很热门,很多好的答案......
讽刺的是,我最近发现了 BDD,发现这个概念很有趣。嘿,它强制编写测试......和规范!尽管看起来令人惊讶,但后者在某些项目中也可能缺失......或者只是缺乏 BDD 强制引入的精度。
行为驱动开发文章总结了这个概念并链接到了一些好文章(比如 Andrew Glover 写的文章)。此外,对于这个线程的主题,它提供了一个相当全面的(我想是)BDD 框架列表,其中很多是用于 Java 的。
它并没有解决选择框架的问题,但至少它会简化搜索......
由于 BDD 严重依赖于测试代码的可读性,我认为一个好的选择标准是查看快速教程/教程,看看哪一个看起来更适合您的风格。其他标准可能是框架利用您熟悉的工具(单元测试、模拟)、IDE 的使用等。
我尝试了Cucumber-JVM(以前开发为 Cuke4Duke)。它使用 Gherkin DSL 进行规范,以纯文本形式存储。
它可以作为 JUnit 测试运行。所以开始使用它的唯一问题是让业务人员或产品经理读/写 Sources 中的 .features。
结果
我的团队已经成功地使用了 JBehave - 我们在使用 EasyB 后转移到它,发现纯文本场景文件更容易处理。
我的团队使用JBehave已经有一段时间了。它使用纯文本文件来存储规范。然后通过某种方法执行每个步骤(Given、When、Then),该方法可以从步骤中提取参数。场景可以缩进并且格式正确,如果客户想要验证它们,这将有很大帮助。
也有一些问题。我们已经切换到 Java 6。有时在执行过程中会忽略某些场景步骤。找出错误在哪里可能会造成很多麻烦。