空手道 vs 史波克

Karate vs Spock

我最近发现 Karate framework for testing Web Services. But there is also Spock 框架提供了类似(我认为)的功能。这些框架之间有什么区别?我想建议我们的测试人员看看它。

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

空手道专注于测试 HTTP 网络服务,因此旨在操纵和执行 JSON 和 XML 上的断言。结果 - 你 do not need POJO-s any-more.

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

IMO 的一个关键区别是,虽然 Spock 和类似框架试图抽象掉 Java 的冗长,以支持更清晰、更具可读性的语法——但它们仅在一定程度上取得了成功。空手道几乎完全绕过 Java(来自测试编写者的 PoV),这意味着您正在以您想要的确切 'layer' 运行 - 即 HTTP 和 JSON / XML .

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

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