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