【问题标题】:Karate vs Spock空手道 vs 史波克
【发布时间】:2017-07-27 13:33:15
【问题描述】:

我最近发现了Karate 用于测试Web 服务的框架。但也有 Spock 框架提供类似(我认为)的功能。框架之间有什么区别?我想建议我们的测试人员看看它。

【问题讨论】:

  • Karate 似乎更专门针对 Web 服务,而 Spock 则适用于任何类型的测试(除非您指的是 Geb)。我建议做一个峰值来比较两者,看看它们如何满足您的特定需求。

标签: testing integration-testing spock end-to-end karate


【解决方案1】:

Karate 的开发者在这里。我只读过关于 Spock 的文章,但这是我的 PoV。

Karate 专注于测试 HTTP Web 服务,因此旨在操作和执行对 JSON 和 XML 的断言。结果——你do not need POJO-s any-more

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

IMO 的一个关键区别在于,虽然 Spock 和类似框架试图抽象出 Java 的冗长,以支持更简洁、更易读的语法——但它们仅在一定程度上取得了成功。空手道几乎完全绕过了 Java(来自测试编写者 PoV),这意味着您在您想要的确切“层”中操作 - 即 HTTP 和 JSON / XML。

我想向您指出这个comparison between Karate and REST-assured - 因为其中一些要点也适用于 Spock,这对于任何评估空手道的团队来说都是一个有用的参考。

编辑 - 空手道的数据驱动测试与 Spock 非常相似,并且使用 JS(可以进行 Java 互操作)而不是 Groovy:https://twitter.com/KarateDSL/status/1359369240227106816

【讨论】:

  • 是否可以使用空手道来测试需要该工具来支持模拟服务的微服务(例如在 Citrus 中)
  • @BrianReinhold 这在路线图中非常重要。我们认为 Karate 的 DSL 实际上非常适合表达动态的、有状态的服务器响应。请注意,空手道有一个模拟 servlet:github.com/intuit/karate/tree/master/karate-mock-servlet
  • 更新:空手道现在内置了模拟! github.com/intuit/karate/tree/master/karate-netty
  • 嗨@PeterThomas,关于空手道支持/适合测试整个微服务(不仅仅是模拟 PoV)的任何建议,尤其是从单元测试到组件到使用 API(微服务)的端到端测试?
  • @SatyendraSharma 空手道可以做到这一切。如果您有具体问题,请提出(作为单独的问题)以获得更好的答案。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2021-08-10
  • 1970-01-01
  • 2022-12-09
  • 1970-01-01
  • 1970-01-01
  • 2020-06-24
  • 1970-01-01
相关资源
最近更新 更多