空手道 vs 史波克

2023-12-01

我最近发现Karate用于测试 Web 服务的框架。但也有Spock框架提供类似(在我心里)功能。这些框架之间有什么区别?我想建议我们的测试人员看一下。


开发商Karate这里。我只读过有关 Spock 的文章,但这是我的观点。

Karate 专注于测试 HTTP Web 服务,因此旨在对 JSON 和 XML 进行操作和执行断言。结果——你不再需要 POJO-s.

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

IMO 的一个关键区别是,虽然 Spock 和类似的框架试图抽象出 Java 的冗长性,转而采用更清晰、更易读的语法,但它们仅在一定程度上取得了成功。 Karate 几乎完全绕过了 Java(从测试编写者的角度来看),这意味着您正在您想要的确切“层”中进行操作 - 即 HTTP 和 JSON / XML。

我想向你指出这一点空手道和 REST-assured 之间的比较- 因为其中一些要点也适用于斯波克,这对于任何评估空手道的团队来说都是一个有用的参考。

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

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

空手道 vs 史波克 的相关文章

  • 使用 google test 进行数据驱动的单元测试

    我目前正在使用以下方法为嵌入式应用程序编写单元测试谷歌单元测试框架 https github com google googletest 现在 我的老板对我测试的数据 即我调用被测类的方法的值 在测试中是硬连接的感到不安 他请求从文件中读入
  • 在单个测试中断言多个条件,还是分成多个测试? [复制]

    这个问题在这里已经有答案了 如果您正在测试如下所示的计数函数 那么在一个函数中测试该函数的多项内容与为每个测试使用一个测试函数相比 是否被认为是 正确 或 错误 function testGetKeywordCount tester thi
  • 如何使用 msw 有条件地模拟错误响应

    我正在处理的 UI 根据收到的响应以不同的方式呈现 我想测试用户界面4xx and 5xx收到答复 我的 api 处理程序看起来像 import rest from msw import items from apiValues expor
  • Chrome 的用户代理切换器

    我正在寻找适用于 Chrome 的用户代理切换器 正在搜索Chrome 网上应用店 https chrome google com webstore没有拿出一个简单的切换器 我知道我可以通过命令行和参数运行浏览器 Google Chrome
  • 如何为Spring测试创建TestContext?

    我有一个相对较小的 Java 库 它实现了几十个 bean 没有数据库或 GUI 我创建了一个 Spring Bean 配置文件 其他 Java 项目使用该文件将我的 bean 注入到他们的东西中 我现在第一次尝试使用 Spring Tes
  • gem 如何提供 Cucumber 功能和步骤定义?

    我有两个 Rails 项目 A 和 B 其中包含以下宝石 project A gem green theme path gt dev themes green theme gem devel tasks path gt dev themes
  • 根据代码版本测试和管理数据库版本

    当您开发应用程序时 数据库的更改不可避免地会出现 我发现的技巧是让数据库构建与代码保持同步 过去 我添加了一个针对目标数据库执行 SQL 脚本的构建步骤 但这很危险 因为您可能会无意中添加虚假数据或更糟的情况 我的问题是保持数据库与代码同步
  • 如何在 Groovy 中设置最后一个字段

    我有一个在 groovy spock 中测试的 java 类 java 类有一个final 字段 private static final log Logger getLogger 我想测试一个方法是否使用此记录器 最好使用模拟 问题是这个
  • 如果我只有 apk 文件,如何在 robotsium 中使用 R.id

    我想测试来自游戏市场的应用程序 当我尝试使用时遇到问题 solo clickOnView solo getView cn wps moffice eng R id writer edittoolbar saveBtn cn cn 无法解析为
  • 包子路径'./src/ngtsc/reflection'不是由/node_modules/@angular/compiler-cli/package.json中的“exports”定义的

    我正在尝试用 jest 运行 ng 测试并收到以下错误 Package subpath src ngtsc reflection is not defined by exports in Users oyf992 source app mn
  • 消除“集成测试骗局” - 了解协作和合同测试

    我最近看过集成测试是一个骗局 http www infoq com presentations integration tests scam由 J B Rainsberger 撰写 现在正在寻找有关该主题的更多材料 我不得不说 我对我们做错
  • 查询参数和assert_generates/assert_routing - 我缺少什么?

    我想我已经介绍了使用查询参数测试路由的排列 但没有一种方法通过 在我的 paths rb 中 我有以下内容 resources items 然后对于我的功能测试我有 require ruby debug require test helpe
  • Django:出于测试目的阻止互联网连接

    我想确保我的单元测试不会尝试连接到互联网 有没有办法在连接时引发异常 有一个类似的问题Python 出于测试目的阻止网络连接 https stackoverflow com questions 18601828 python block n
  • 如何在运行“go test”时排除或跳过特定目录[重复]

    这个问题在这里已经有答案了 go test go list grep v vendor coverprofile testCoverage txt 我正在使用上述命令来测试文件 但有 1 个名为 Store 的文件夹我想从测试中排除 怎样才
  • 如何在 Grails Geb/Spock 测试用例中获取 sessionFactory?

    我想我需要在 GebSpec 测试中刷新 hibernate 会话 所以我想获取 sessionFactory 看起来应该被注入 但是当我做这样的事情时 class MySpec extends GebSpec def sessionFac
  • 如何阻止与 RSpec 和 Capybara 的外部连接?

    在我的 Rails 项目中 我想编写非理想条件的测试 例如缺乏互联网连接或超时 例如 我正在使用 gem 来联系 API 并且希望确保在我的应用程序和外部 API 之间存在连接问题时能够正确处理错误 我已经可以通过用录像机制作固定装置并从
  • 如何在 Rails 测试中测试 params 哈希?

    以下内容会生成错误 未定义的局部变量或方法 params assert equal params recipient id users one id 如何测试参数哈希 另外 你如何测试assert redirect当存在参数时 参数附加到
  • 对更改运行 PHPUnit 测试

    每当磁盘上的文件发生更改时 我想运行 PHPUnit 测试 或至少其中的一个子集 与您可以使用 进行的操作非常相似 咕噜手表 https github com gruntjs grunt contrib watch blob master
  • 使用 VCR 过滤敏感数据

    我正在使用 VCR gem 记录 http 交互并在将来重播它们 我想过滤掉 uri 请求中的实际密码值 以下是 uri 的示例 http services somesite com Services asmx Cabins Usernam
  • Selenium 中的断言和验证

    有人可以解释一下断言和验证之间的区别吗 我知道验证意味着它检查它是否存在 如果不存在 则测试失败并停止在那里 正确吗 那么 即使断言失败了 断言还会继续吗 我已经阅读了文档 但仍然无法理解它 不 你已经搞反了 在 Selenium IDE

随机推荐

  • 是否可以在未计算的上下文中从 STD 形成指向不可寻址函数的指针?

    如中所述命名空间 std 6 让 F 表示标准库函数 除非 F 被指定为可寻址函数 否则如果 C 程序显式或隐式尝试形成指向 F 的指针 则其行为是未指定的 可能是格式错误的 这对于以下程序意味着 include
  • 字符 Å Ö 没有显示在我的 DDL 中,我如何告诉 Restclient 使用特定的字符集?

    在我开始之前 这里是一个问题 应该是这样的 Bj rn Nilsson 相反 它显示奇怪的特殊字符 所有包含字符 和 的值都变成这样 我用 XML 格式的 API 中的值填充我的 DDL 其中包含所有值 并且我们还使用 Linq2Rest
  • 如何显示带有动态创建的姓名首字母的头像图标

    我有一个要求 通过传递名称 它应该返回头像 图标 其中包含该名称中包含的单词的第一个字母 例如 如果我通过 John Abraham 它应该返回一个带有 JA 的图标 我需要在 SAPUI5 控件中使用该图标 我对此没有任何想法 如何实施
  • Java 一行 if 不适用于打印[重复]

    这个问题在这里已经有答案了 如果你写这样的东西 boolean condition String out condition true false System out println out 有用 但如果你写 condition Syst
  • 正则表达式将所有字符都放在第一个空格的右侧?

    我正在尝试创建一个正则表达式 该表达式将匹配字符串中第一个空格之后 但不包括 的所有字符 输入文本 foo bar bacon 期望的比赛 bar bacon 到目前为止我发现的最接近的是 s 然而 这与 bar bacon 之外的第一个空
  • Eclipse 插件更新错误日志在哪里?

    当我尝试更新一个 Eclipse 插件时 它显示以下错误 但我在 Eclipse 文件夹下没有找到任何内容 日志路径在哪里 an error has occurred see the error log for details Thx 该日
  • NSURLCredentialStorage 和客户端证书认证

    从我在 MPMoviewPlayerController 的文档中看到的 NSURLCredentialStorage 可以设置为 NSURLConnection 身份验证挑战的替代方案 这对于从 URL 加载资源但抽象 NSURLConn
  • iOS:如何获取两个坐标之间的路线路径

    在我的项目中 我必须借助纬度和经度找出两个位置之间的路线路径 我正在使用以下代码 void viewDidLoad super viewDidLoad Do any additional setup after loading the vi
  • .net MVC:如何仅向授权用户提供静态文件

    我的网站中有静态文件 例如 http myurl com Content a html http myurl com Content b html etc 我想在访问时验证用户的身份验证 身份验证应通过数据库数据进行检查 我的框架 ASP
  • Swift 多关卡场景

    我正在尝试开发一个新的游戏项目 其中将包含多个级别 我正在读这个问题 Sprite Kit 定义多个场景的变量 关于使用尽可能少的重复代码来完成多个场景的最佳方法 答案当然是子类化 假设我创建了 baseScene 它是 SKScene 的
  • 如何监听来自 Kafka 的正确 ACK 消息

    我正在做一个POC使用 Spring Boot 和 Kafka 进行事务性项目 我有以下疑问 设想 一个微服务MSPUB1接收来自客户的请求 该请求发布有关主题的消息TRANSACTION TOPIC1在 Kafka 上 但微服务可以并行接
  • Twig Excel 捆绑包自动调整大小

    如何在 Twig Excel Bundle 中设置自动调整大小 https twigexcelbundle readthedocs io en latest 您可以设置默认值autoSize片材的属性true via columnDimen
  • Java 中的垃圾回收与递归函数

    我知道在常规循环的每次迭代中 对象都会变得无法访问并标记为垃圾回收 那么递归调用呢 就像是 public void doWork Object a new Object some work with a this sleep 60000 d
  • 如何计算SQL中两个日期之间的“星期二”数?

    我想弄清楚如何计算 TSQL 中两个日期之间的 星期二 数量 Tuesday 可以是任何值 谢谢 t clausen dk 救了我几天 要获取每天的实例数 declare from datetime 3 1 2013 declare to
  • 带秒数的时间选择器

    我正在使用 Xamarin Forms 在我的应用程序中的某个位置 我需要用户能够以 HH mm ss 格式输入时间 所以 基本上我需要一个像这样的控件 通过使用自定义 iOS 渲染 我已经能够从 TimePicker 中删除 AM PM
  • 如何识别 GridView 中已编辑的行?

    我的客户希望 GridView 仅显示 TextBoxes 和 DropDownListBoxes 内的字段 他希望在更改单元格中的值后只需单击 更新 按钮即可灵活地更新记录 他希望当前编辑的 GridViewRow 具有某种不同的颜色 以
  • Mongo相当于SQL的SELECT DISTINCT?

    根据标题 PHP Mongo 相当于 SQL 中的类似内容 SELECT DISTINCT field FROM table WHERE someCondition 1 我读过看过这张桌子但我不知道如何映射db users distinct
  • Javascript,使用下划线(或不使用)转换对象

    我正在准备一个要发送的对象 它最初看起来像这样 var myObj state Saved true Committed false Published false discipline Marketing true 并且需要通过查看内部对
  • 在 Alfresco 内容模型中创建一个方面

    我目前开始使用 Alfresco CMS 我需要在我的内容模型中创建一个 方面 它必须包含许多属性 如下所示 Aspect property 1 String property 2 int property 3 int property 4
  • 空手道 vs 史波克

    我最近发现Karate用于测试 Web 服务的框架 但也有Spock框架提供类似 在我心里 功能 这些框架之间有什么区别 我想建议我们的测试人员看一下 开发商Karate这里 我只读过有关 Spock 的文章 但这是我的观点 Karate