2017-07-27 90 views
2

我最近找到Karate测试Web服务的框架。但也有Spock框架提供类似的功能(以我的想法)功能。框架之间有什么区别?我想建议我们的测试人员来看看它。空手道与Spock

+2

空手道似乎更具体到Web服务,而Spock是用于任何类型的测试(除非你的意思是Geb)。我会建议做一个尖峰来比较两个,看看他们如何为您的特定需求堆积起来。 – cjstehno

回答

6

开发商Karate这里。我只读过Spock,但这里是我的PoV。

Karate专注于测试HTTP Web服务,因此被设计用于处理和执行JSON和XML的断言。因此 - 你do not need POJO-s any-more

鉴于Spock是一个通用的测试框架。它基于Groovy,因此与仅使用Java相比,它稍微减少了冗长度,并增加了表达测试用例的BDD风格。就像Karate一样,它具有测试用例,生命周期(在钩子,环境切换等之前)数据驱动的测试助手,以及与单元测试和报告框架(如JUnit)的集成。

IMO的一个关键差异是,尽管Spock和类似的框架试图抽象出Java的冗长性,转而使用清晰可读的语法 - 它们只能在某种程度上成功。 Karate几乎完全绕过了Java(来自测试编写者PoV),这意味着您正在使用您想要的“层” - 即HTTP和JSON/XML。

我想指出你的这个comparison between Karate and REST-assured - 因为有些观点也适用于Spock,并且对任何评估空手道的团队都有帮助。

+1

可以使用空手道来测试微服务,这将需要支持嘲笑服务的工具(如Citrus) –

+0

@BrianReinhold这是非常多的路线图。我们认为Karate的DSL实际上非常适合表达动态,有状态的服务器响应。请注意,Karate有一个模拟servlet:https://github.com/intuit/karate/tree/master/karate-mock-servlet –