答案 1
我刚刚完成了对Java的三个BDD框架的比较。显然,我的发现有一个相当短的使用日期。
- 非常灵活
- 非常漂亮的报告输出
- 不错的插件框架
- 记录不周。我不得不阅读源代码才能弄清楚(幸运的是它的质量非常好)。
- 固定装置似乎最终可能会与html紧密耦合。
- 非常浅的学习曲线(即使对于非时髦开发人员)
- 极其强大的 DBUnit 集成
- 显然不支持参数(导致非常模糊的故事或文本和代码之间的重复(编辑:实际上有,但它的文档被很好地隐藏了。
- 故事和代码非常紧密地耦合(同一文件)
- 非常基本的报告输出
- 无法让 IntelliJ 插件正常工作
- 不活跃的社区(Maven插件似乎已经中断了三个月 - 没有太多的代码示例可以借鉴)
- 非常强大和灵活(例如,通过故事的构图作为先决条件来减少样板)
- 大量(如果零散)文档和示例
- 对不同框架和环境的广泛(如果压倒性)支持
- 故事文件与代码的完美分离
- 看起来有一个非常活跃的社区,在网络上有更多的例子和讨论。
- 相当陡峭的学习曲线(我花了3-4倍的时间才弄清楚Concordian / EasyB)
我没有机会像我想要的那样尝试JDave的Cuke4Duke,但此时可能会推动JBehave。
答案 2
“利弊”对于不同的人来说可能是不同的事情。我通常看看
- 开发活动,例如,可能是新版本还是最后一个版本已有2年的历史。
- 成熟度,例如,它已经存在了多长时间,是否有教程,甚至可能是可用的书籍。(我不读这些书,这只是被收养的标志。
- 工具支持,例如是否有Eclipse插件,Ant支持等
- 依赖项的大小,我不喜欢自带所有内容的框架。例如,我想自己选择我的模拟框架。
- 某种许可证,这对我来说很重要,因为我工作的公司有法律条款。
- 与相关工具的兼容性,例如,它是否使用小黄瓜语言。
从一些框架中,我看了一下
- 本能坏:最后一次活动 2010年3月,好:ASF许可证
- JDave坏:带有匹配器和模拟,好:最后一次活动2011年1月,ASF许可证
- easyb bad:最后一次活动 2010 年 10 月,不确定:它使用 Groovy。这可能没问题,但在我的情况下,这将是一个采用的问题。
- 豆种规格不好:2007年只有一个版本,这个已经死了
- bdoc bad:最后一次活动 2010 年 1 月,不确定:它看起来像是走另一条路,从代码创建报告。
- spock不好:也许有点极端,这是一个完整的测试框架,不仅是BDD,好:非常活跃,非常酷。
- jbehave,Java中所有BDD的“母亲”,坏:非常强大=复杂,不兼容的许可证(对我来说),几乎每个测试库都附带更多,好:基于RSpec,因此兼容,eclipse插件,maven集成,非常活跃的社区
- ginkgo4j是Java的BDD框架,也基于Ruby的RSpec,但使用Java lambda(而不是注释)来允许您创建高度上下文,高度可读的测试。简单。非常强大。开源 Apache 2 许可证。
关于模拟:你肯定也需要一个模拟框架。BDD框架只是帮助你编写规范,但有些测试将需要模拟或存根,特别是当你设计自上而下(从概述到细节)时。
推荐
-
如何使用Java中的RESTful Web服务获取远程/客户端IP地址? 我已经在我的项目中编写了Rest Web服务。Web服务调用可能来自不同 machine.so 我需要通过REST Web服务找出IP地址。 从这个请求.getRemoteAddr()使用这个。 但是我不能使用getRemoteAddr()。因为我的请
-
从包含大量文件的zip文件中提取1文件的最快方法是什么? 我尝试了但它们也缺少一些东西。 LZMA SDK不提供一种如何使用的文档/教程,这非常令人沮丧。没有 javadoc。 虽然7z jbinding没有提供一种简单的方法来只提取1个文件,但是,它只提供了提取zip文件
-
输入/输出流在销毁时是否关闭? Java 中的 InputStreams 和 OutputStreams 是否在销毁时关闭()?我完全理解这可能是不好的形式(特别是在C和C++世界中),但我很好奇。 另外,假设我有以下代码: 无名的FileInputStream是否在p.load
-
Java 程序中的字符串大小是否有任何限制? 我有一个字符串定义为 字符串 xx 我可以分配的字符数是否有任何限制? 2) 我正在将用户输入分配给此字符串 xx。70%的人只说一个字。有时他们给出一个大句子,所以想知道可
-
标签
推荐