今天看啥  ›  专栏  ›  InfoQ

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

InfoQ  · 公众号  · 科技媒体  · 2024-10-13 10:15

主要观点总结

本文主要介绍了Apple新的Swift Testing框架,该框架为Swift跨平台测试提供了现代化工具。文章涵盖了Swift Testing的关键特性,如参数化测试、并行化、宏的使用、trait的关联、测试套件的组织以及校验测试结果的方法。同时,本文还提及了Swift Testing框架的位置和所需环境,以及与XCTest的共存方式。

关键观点总结

关键观点1: Swift Testing框架简介及其主要特性

Swift Testing是Apple为Swift跨平台测试提供的新框架,它提供了富有表达力且直观的API。关键特性包括参数化测试、并行化、宏的使用、trait的关联、测试套件的组织以及校验测试结果的方法。

关键观点2: @Test宏的使用

开发人员可以使用@Test宏来声明测试名称和参数列表,并且可以为测试函数关联trait。例如,可以根据运行时条件启用或禁用测试、限制测试运行时间、串行或并行运行测试等。

关键观点3: 参数化测试的优势

参数化测试允许使用多个输入值进行测试,并清楚地指出失败时的输入。这有助于在只有少量输入值失败时,避免对所有可能的输入值组合运行测试。

关键观点4: Swift Testing的位置和所需环境

Swift Testing位于GitHub和Swift Package Index上,需要Swift 6环境。它与XCTest可以共存于同一项目中。

关键观点5: 测试和主可执行文件的区别

在构建发布版本时,测试函数不会从二进制文件中剥离出来。因此,建议将测试库导入测试目标,而不是与主可执行文件链接在一起。


文章预览

尽管 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 接受一个我们所提供的参数。在进行参数化测试时,还可以处理多个输入。在这种情况下,我们会为 @Test 的 arguments 提供一个集合列表,测试函数将在两个集合中选取每个集合中可能的参数 ………………………………

原文地址:访问原文地址
快照地址: 访问文章快照
总结与预览地址:访问总结与预览