适用于Java平台的商业BDD工具

时间:2013-10-22 09:37:35

标签: java testing bdd acceptance-testing

在过去的几周里,我一直在尝试Java的几个验收测试框架(例如Fitnesse,JBehave)。

在决定使用哪一个之前,我试图找出是否有任何商业替代品,但没有找到任何商品。任何指针都赞赏。

我们的要求是(不完整和未排序的列表):

  • 使用给定/时/当时样式的文本和表格
  • 标准库的集成,例如JUnit,Mockito
  • IDE集成/模具
  • 良好的报告(业务分析师的可读性,诊断开发人员)

4 个答案:

答案 0 :(得分:2)

对于商业替代品:

  • Thoughtworks'"Twist"
  • Paul Gerrard的"Business Story Manager",它也参与了一些更高级别的BDD模式,识别利益相关者并跟踪场景与更大规模要求的关系

这是我所知道的唯一两个。 BDD社区中没有大量关注者。我相信两个最常用的工具是JBehave和Cucumber(正如@kazakovs指出的那样,它也可用于JVM)。这些有助于捕获开发人员和业务分析人员可读的英语方案。我也使用(相当于.NET)Fitnesse和Slim背后的东西;快速的CSS使它看起来像其他的,同时允许表格。

但是,大多数BDD工具都是针对全栈,系统范围的场景而设计的,通常没有任何模拟,或者可能是由自定义框架替换的第三方库。模拟库并没有真正具备这种规模的设置。

如果您正在寻找整合Mockito和JUnit,听起来好像您可能尝试以较小的规模进行BDD,使用类或小组类。这就是BDD最初启动的方式,并且完全有效。

自BDD诞生以来,像JUnit这样的工具已经有所改进,Mockito也不存在!因此不再特别需要BDD工具。对于类级代码,我很乐意简单地使用Given,When和Then的注释,如this(这是C#但Java类似)。

作为更高级别的替代方案,您总是可以点击small DSL。这并不需要我很长时间,而且即使对于非技术性商务人士来说也是如此。它使用JUnit运行,如果你愿意,你可以将Mockito放在那里(但是如果你想这样做,我仍然怀疑你是混合问题。)

DSL的另一个好处是它是一种快速,廉价的入门方式,没有Cucumber或JBehave的设置开销;但是生成的步骤很容易移植到JBehave之类的东西上(你只需将代码移到JBehave的正则表达式步骤,如果你不能用Twist做类似的事情,我会感到惊讶)。由于您不确定您的要求,我建议您使用此路线,因为它可以帮助您开始并以非常便宜的方式获得有关您需要的更多信息。

答案 1 :(得分:0)

看看Cucumber-JVM 但我不确定它是否是商业性的。

答案 2 :(得分:0)

如果您可以使用Groovy,我在Spock Framework取得了巨大成功。您可以将它与Geb一起使用来进行ui测试。我们后来从使用Geb切换到Twist,因为它提供的功能更便宜。我们仍然使用Spock进行所有服务测试(WebService,REST等)。请在此处阅读我的另一个相关答案Demonstration using Spock

答案 3 :(得分:0)

我建议看看 Concordion http://www.concordion.org) - 是的,我必须承认它是一个开源工具,而不是商业工具。然而,根据您的要求列表,它可能是一个很好的选择:

  • 由于Concordion规范是用简单的英语编写的,因此您可以使用given / when / then短语和表格。在我们的项目中,我们更进一步,根据Concordion技术编写我们的文档。因此,您将获得一个活文档系统,自动检查您对预期行为的描述是否与实际应用程序保持同步。

  • Concordion使用JUnit运行测试/活动规范。在夹具类中,您可以使用您喜欢的任何框架,例如Mockito。我在项目中成功地使用了Concordion和Mockito的组合。

  • Concordion的IDE集成很好,因为它基于JUnit。因此,只要您拥有JUnit支持,就可以使用Concordion。我一直在使用Eclipse IDE,您可以通过从上下文菜单中调用“Run as JUnit test”来运行和调试Concordion测试。

  • Concordion提供基于您的规格的HTML报告。因此,您的业务人员可以通过查看指定的描述并阅读系统提供的报告输出,轻松查看出现了什么问题。 Concordion在HTML文档中可视化差异。此外,由于JUnit运行Concordion测试,您将获得JUnit可能习惯的所有报告支持。您可以轻松地调试Concordion测试,例如在Eclipse IDE中,与任何其他JUnit测试一样。