Answers:
我刚刚比较了三种Java BDD框架。显然,我的发现的使用期限很短。
我没有如我所愿尝试JDave的Cuke4Duke的机会,但此时可能会推动JBehave。
对于不同的人来说,“利弊”可能是不同的。我通常看看
从某些框架中,我看了一下
关于模拟:您当然也需要一个模拟框架。BDD框架只是帮助您编写规范,但是某些测试将需要模拟或存根,尤其是。自上而下设计时(从概述到详细信息)。
与Java一起使用的最佳BDD框架是什么?为什么?每个框架的优缺点是什么?
这是有关Concordion与Cucumber和基于Java的验收测试的有趣链接
我在这里找到了其中的几个,但是我不确定该选择哪个。
真的,看看上面提到的那个。
如果我已经在使用模拟库(例如Mockito),则使用BDD框架有意义吗?
简短的回答:可以。实际上,使用BDD框架进行的验收测试和使用模拟对象进行的隔离单元测试是如此不同,以至于我并没有真正想到这个问题。验收测试是黑盒测试,测试用于验证业务功能是否正常运行,并且最好由业务分析师编写。使用模拟隔离的单元测试是白盒测试,测试用于验证单元是否正常工作并由开发人员编写。两者都是有用的,但是它们具有完全不同的目的。换句话说,使用Mockito根本不会替代BDD框架,反之亦然。
哇,我看到话题很热,好答案很多...
除了具有讽刺意味的是,我最近发现了BDD,并发现了这个概念很有趣。嘿,它迫使同时编写测试和规范!令人惊讶的是,后者在某些项目中也可能丢失……或者只是缺乏BDD强制引入的精度。
“ 行为驱动开发”一文概述了这一概念,并链接了一些不错的文章(例如Andrew Glover撰写的文章)。而且,关于该线程的主题,它给出了一个相当全面的(我想是)BDD框架列表,其中很多是Java的。
它不能解决选择框架的问题,但至少可以简化搜索...
由于BDD高度依赖于测试代码的可读性,因此我认为一个不错的选择标准是看一下快速导览/教程,看看哪种看起来更适合您的风格。其他条件可能是事实,即您熟悉的框架利用工具(单元测试,模拟),IDE的使用等等。
我尝试了Cucumber-JVM(以前开发为Cuke4Duke)。它使用Gherkin DSL进行规范,以纯文本格式存储。
它可以作为JUnit测试运行。因此,开始使用它的唯一问题是使业务人员或产品经理在Sources中读/写.features。
结果
我的团队已经使用JBehave已有一段时间了。它使用纯文本文件存储规范。然后,可以通过某种方法执行每个步骤(给出,何时,然后),该方法可以从该步骤中提取参数。场景可以缩进和格式化,如果客户想要验证场景,这会很有帮助。
也有一些问题。我们已切换到Java6。有时在执行过程中会忽略某些场景步骤。找出错误所在可能会造成很多麻烦。