网易首页 > 网易号 > 正文 申请入驻

苹果推出新的 Swift Testing 框架,实现 Swift 跨平台的现代化测试

0
分享至

尽管 XCTest 仍是在 Xcode 中创建测试的首选方式,但新的 Swift Testing 框架试图为测试的定义引入一个富有表达力且直观的 API,它适用于支持 Swift 的所有平台。该框架还支持参数化、并行化、分类以及将测试与缺陷关联起来。

Swift Testing 广泛使用了宏,以此来提供声明复杂行为的惯用方式。例如,我们可以像这样声明一个测试,其中包含了一个名称和一组要运行的备选输入:

import Testing
...
@Test("Sample test", arguments: [
"input string 1",
"input string 2",
"input string 3"
])
func sampleTest(sampleInput: String) {
...
}

上述的测试会执行三次,每次调用都会通过sampleInput接受一个我们所提供的参数。在进行参数化测试时,还可以处理多个输入。在这种情况下,我们会为@Testarguments提供一个集合列表,测试函数将在两个集合中选取每个集合中可能的参数,并将它们的值组合起来:

@Test("Multiple collections as test inputs", arguments: 0...100, ["a", ..., "z"])
func test(number: Int, letter: String) {
}

arguments的特定条件下,我们可以有选择性的运行参数化测试,所以当只有少量输入值失败时,没有必要对所有可能的输入值组合运行测试。

除了可以声明名称和参数列表之外,@Test宏还支持为测试函数 关联 trait。现有的 trait可以根据运行时条件启用或禁用测试、限制测试运行时间、串行或并行运行测试、将测试与缺陷关联等。例如,我们可以按照如下的方式,只有启用了特定的应用程序特性,才运行测试:

@Test(.enabled(if: App.ConditionToMatch))
func conditionalTest() {
...
}

开发人员还可以通过实现符合 TestTrait 的类型来定义自己的 trait。

参数化测试的另一个好处在于,测试失败所产生的诊断结果会清楚地指出失败时的输入。

测试函数可以组织成测试套件(test suite)。传统的做法是将它们放在同一个测试class中。Swift Testing 还为此提供了一个特定的宏@Suite。属于测试套件的所有测试函数都继承套件的相同 trait,包括tags(_:)disabled(_:sourceLocation:)

为了校验测试结果,Swift Testing 提供了两个宏expect(_:_:sourceLocation:)require(_:_:sourceLocation:)require会在不满足条件时抛出异常停止测试的执行,而expect则会打印详细信息。

有一个重要的注意事项,在构建发布版本时,测试函数不会从二进制文件中剥离出来。因此,苹果强烈建议将测试库导入测试目标(test target),而不是与主可执行文件链接在一起。

Swift Testing 位于 GitHub 和 Swift Package Index 上,需要 Swift 6 环境。XCTest 和 Swift Testing 可以共存于同一项目中,因此如果你想采用新框架,不一定必须迁移现有的测试。

查看英文原文:

Swift Testing is a New Framework from Apple to Modernize Testing for Swift Across Platforms (https://www.infoq.com/news/2024/09/swift-testing-framework/)

声明:本文由 InfoQ 翻译,未经许可禁止转载。

特别声明:以上内容(如有图片或视频亦包括在内)为自媒体平台“网易号”用户上传并发布,本平台仅提供信息存储服务。

Notice: The content above (including the pictures and videos if any) is uploaded and posted by a user of NetEase Hao, which is a social media platform and only provides information storage services.

相关推荐
热点推荐
认罪刚一天!许家印长子每月4100万生活费,家族资产黑幕全揭开

认罪刚一天!许家印长子每月4100万生活费,家族资产黑幕全揭开

番外行
2026-04-20 12:46:52
售价55.98万元!理想L9 Livis定档5月15日上市并开启交付

售价55.98万元!理想L9 Livis定档5月15日上市并开启交付

CNMO科技
2026-04-20 18:20:15
女子酒窝大被网友质疑是AI特效 本人:是真的 一直都被人说大

女子酒窝大被网友质疑是AI特效 本人:是真的 一直都被人说大

快科技
2026-04-20 16:40:42
“刘仪伟,我们的百亿去哪了?”大片投资骗局受害人联名质问

“刘仪伟,我们的百亿去哪了?”大片投资骗局受害人联名质问

文娱春秋Plus
2026-04-20 09:00:08
2000吨英国潜艇消失,我国暗中打捞拆解研究,39年后首相却上门讨要

2000吨英国潜艇消失,我国暗中打捞拆解研究,39年后首相却上门讨要

睡前讲故事
2026-03-30 13:48:58
多名院士调查发现:吃一口放久变软的香蕉,或等于进一次毒?真假

多名院士调查发现:吃一口放久变软的香蕉,或等于进一次毒?真假

今日养生之道
2026-04-21 00:21:19
细节流出!银行行长被恒大歌舞团围猎!许家印的“红楼”往事

细节流出!银行行长被恒大歌舞团围猎!许家印的“红楼”往事

大江看潮
2026-04-21 09:50:44
重庆交运物流有限公司因违规转包被暂停全军物资工程服务采购资格

重庆交运物流有限公司因违规转包被暂停全军物资工程服务采购资格

齐鲁壹点
2026-04-21 11:07:25
伊朗外交部发言人:美方蓄意封锁已构成战争罪和反人类罪

伊朗外交部发言人:美方蓄意封锁已构成战争罪和反人类罪

环球网资讯
2026-04-19 20:48:11
湖人官方:东契奇和里夫斯缺阵与火箭的系列赛G2

湖人官方:东契奇和里夫斯缺阵与火箭的系列赛G2

懂球帝
2026-04-21 08:03:19
悲催!网传陕西一女子因丈夫婚内出轨后轻生,逝者已40天未入土…

悲催!网传陕西一女子因丈夫婚内出轨后轻生,逝者已40天未入土…

火山詩话
2026-04-21 06:02:18
总裁外派我三年后召我回国,秘书悄悄说:您太太在瑞士有家了

总裁外派我三年后召我回国,秘书悄悄说:您太太在瑞士有家了

晓艾故事汇
2026-04-18 15:18:37
大量硼砂,别再给家里人吃了!这10类食物最易掺硼砂,超危险

大量硼砂,别再给家里人吃了!这10类食物最易掺硼砂,超危险

笑熬浆糊111
2026-04-13 00:05:12
58股今日获机构买入评级

58股今日获机构买入评级

证券时报
2026-04-21 18:04:05
突发!002837暴大雷了,21万股民放声大哭!

突发!002837暴大雷了,21万股民放声大哭!

新浪财经
2026-04-21 18:09:24
快讯!外媒连夜热议中国首过横当后或将有三大铁拳继续教训日本

快讯!外媒连夜热议中国首过横当后或将有三大铁拳继续教训日本

达文西看世界
2026-04-21 12:00:49
“中年返贫三件套”,正在吞掉一代人的存款

“中年返贫三件套”,正在吞掉一代人的存款

十点读书
2026-04-18 18:36:15
尴尬!董宇辉被吐槽:喜欢支教,一天没去;不喜欢带货,一天没停

尴尬!董宇辉被吐槽:喜欢支教,一天没去;不喜欢带货,一天没停

火山詩话
2026-04-21 06:59:47
6月1日起全国工地统一用工新规,明确60岁以上农民工上岗标准

6月1日起全国工地统一用工新规,明确60岁以上农民工上岗标准

阿嚼影视评论
2026-04-20 21:02:56
69年陈云下放江西,时任省委书记拒不见面,陈云:此人胆子很大

69年陈云下放江西,时任省委书记拒不见面,陈云:此人胆子很大

鉴史录
2026-04-20 22:03:41
2026-04-21 20:16:49
InfoQ incentive-icons
InfoQ
有内容的技术社区媒体
12280文章数 51851关注度
往期回顾 全部

科技要闻

创造4万亿帝国、访华20次,库克留下了什么

头条要闻

挪用1700万打赏主播女生已自首 警方:能否立案需调查

头条要闻

挪用1700万打赏主播女生已自首 警方:能否立案需调查

体育要闻

62岁,成为中国足坛最火的人

娱乐要闻

周润发时隔16年再卖楼,变现数亿资产

财经要闻

现实是最大的荒诞:千亿平台的冲突始末

汽车要闻

全新坦克700正式上市 售价42.8万-50.8万元

态度原创

游戏
旅游
教育
健康
公开课

CS2最大一次史诗级更新来了!底层系统彻底重构

旅游要闻

软萌来袭!三只黑天鹅宝宝亮相翠湖公园

教育要闻

26届高考生狂喜吧!截至目前,高考已有6个好消息!家长考生了解

干细胞抗衰4大误区,90%的人都中招

公开课

李玫瑾:为什么性格比能力更重要?

无障碍浏览 进入关怀版