面向Java平台的商业BDD工具

面向Java平台的商业BDD工具,java,testing,bdd,acceptance-testing,Java,Testing,Bdd,Acceptance Testing,在过去的几周里,我一直在试验几种Java验收测试框架(例如Fitnesse、JBehave) 在决定使用哪一种之前,我试图找出是否有任何商业替代品,但没有真正找到。欢迎指点 我们的要求是(不完整且未分类的列表): 使用给定/何时/然后样式的文本和表格 集成标准库,如JUnit、Mockito IDE集成/工具 良好的报告能力(业务分析师的可读性,开发人员的诊断能力) 看看 但我不确定它是否商业化。对于商业替代品: Thoughtworks' Paul Gerrard的,它也参与了一些更高级别

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

在决定使用哪一种之前,我试图找出是否有任何商业替代品,但没有真正找到。欢迎指点

我们的要求是(不完整且未分类的列表):

  • 使用给定/何时/然后样式的文本和表格
  • 集成标准库,如JUnit、Mockito
  • IDE集成/工具
  • 良好的报告能力(业务分析师的可读性,开发人员的诊断能力)
看看
但我不确定它是否商业化。

对于商业替代品:

  • Thoughtworks'
  • Paul Gerrard的,它也参与了一些更高级别的BDD模式,识别利益相关者并跟踪场景与更大规模需求的关系
这是我唯一知道的两个。在BDD社区中都没有大的追随者。我认为最常用的两个工具是JBehave和Cucumber(正如@kazakovs所指出的,JVM也可以使用这两个工具)。这些有助于捕获开发人员和业务分析师都可以阅读的英语场景。我还使用了(相当于.NET的)Fitnesse和Slim;一个快速的CSS使它看起来像其他的,同时也允许表

然而,大多数BDD工具都是为全堆栈、系统范围的场景而设计的,通常没有模拟,或者可能有第三方库被自定义框架取代。模拟库并没有在这种规模下工作的设置

如果您希望集成Mockito和JUnit,那么听起来您可能会尝试使用类或小类组以较小的规模进行BDD。BDD最初就是这样开始的,它是完全有效的

自从BDD诞生以来,像JUnit这样的工具得到了改进,Mockito就不存在了!因此,BDD工具不再特别必要。对于类级代码,我很乐意简单地使用带有给定的注释,如(这是C#,但Java类似)

作为更高层次的替代方案,你总是可以找到一个更好的选择。这并没有花我很长时间,而且它是可读的,即使对于非技术业务人员。它使用JUnit运行,如果您愿意,您可以将Mockito放在其中(但如果您想这样做,我仍然怀疑您是在混合关注点)


DSL的另一个好处是它是一种快速、廉价的入门方式,没有Cucumber或JBehave的设置开销;但是生成的步骤稍后很容易移植到像JBehave这样的东西(您只需将代码移动到JBehave的regex步骤,如果您不能使用Twist做类似的事情,我会感到惊讶)。由于您不确定自己的需求,因此我建议您使用此方法,因为它将帮助您以非常便宜的价格开始并获取有关您真正需要的更多信息。

如果您可以使用Groovy,我已经取得了巨大的成功。您也可以使用它来进行ui测试。我们后来从使用Geb切换到使用它,因为它提供的强大功能更便宜。我们仍然使用Spock进行所有服务测试(WebService、REST等)。阅读我在这里的另一个相关答案

我想看看()——是的,我必须承认它是一个开源工具,而不是商业工具。然而,根据您的需求列表,它可能是一个很好的选择:

  • 由于协和规范是用简单的英语编写的,所以您可以使用给定的/when/then短语以及表格。在我们的项目中,我们更进一步,基于Concordion技术编写文档。因此,您将收到一个动态文档系统,在该系统中,自动化将检查您对预期行为的描述是否与实际应用程序同步

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

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

  • Concordion提供基于您的规范的HTML报告。因此,您的业务人员可以通过查看指定的描述并阅读系统提供的报告输出,轻松地看到哪里出了问题。差异通过HTML文档中的一致性可视化。此外,由于协和测试是由JUnit运行的,因此您将获得JUnit可能使用过的所有报告支持。与任何其他JUnit测试一样,您可以轻松地调试协调测试,例如在EclipseIDE中


谢谢您的回答。我们在上周末发现Twist-仍在等待试用许可证:-(我们仍在努力为不同的范围找到合适的工具/方法……我们在JUnit测试中试验了给定的/When/Then样式和micro DSL样式。只要没有大量类似的输入组合,这两种样式都可以。代码方法不允许我们对所有示例使用CA进行概述在JUnit中使用@Parameterized并不是一种可读性很好的表示决策表的方法。当然,代码并不总是一种方便通信的好方法,这显然对您来说不是什么新信息。@jens,Cucumber等人可能给您带来的好处之一是步骤的可重用性。这只适用于系统级(在单元级,类应该有单一的职责,没有重复,因此没有重复的步骤)。因此,我建议对类使用注释样式。如果