View in English

  • 打开菜单 关闭菜单
  • Apple Developer
搜索
关闭搜索
  • Apple Developer
  • 新闻
  • 探索
  • 设计
  • 开发
  • 分发
  • 支持
  • 账户
在“”范围内搜索。

快捷链接

5 快捷链接

视频

打开菜单 关闭菜单
  • 专题
  • 相关主题
  • 所有视频
  • 关于

更多视频

大多数浏览器和
Developer App 均支持流媒体播放。

  • 简介
  • 转写文稿
  • 代码
  • XCTSkip 你的测试

    获取重要的测试结果——跳过无关紧要的测试结果。了解如何用 XCTSkip 有条件地避免在运行时进行测试。我们将带你了解如何返回此新测试结果,并更好地记录测试包中除了合格和不合格之外的测试。 要想充分利用本节内容,建议先熟悉 XCTest 和单元/ UI 测试。 观看 “在 Xcode 中测试”以获取入门知识。 了解 XCTSkip 之后,请进一步了解在测试方面的改进:观看“使用 XCTIssue对测试不合格进行分类”,“处理 UI 测试中的中断和警报”,“更快地获得测试结果”和“使用 XCTest 消除动画故障”。 要想了解如何改进测试套件,请查看“编写不合格测试”。

    资源

      • 高清视频
      • 标清视频

    相关视频

    WWDC22

    • 为 Xcode Cloud 创建快速而可靠的测试

    WWDC20

    • 使用 XCTIssue 分类测试失效
    • 使用 XCTest 消除动画障碍
    • 处理 UI 测试中的中断和警报
    • 更快地获得测试结果
    • 编写不合格的测试

    WWDC19

    • 在 Xcode 中进行测试
  • 搜索此视频…

    (你好 WWDC 2020) 你好 欢迎参加 WWDC (XCTSkip 你的测试) 你好 我叫 Wil 我从事 Xcode 的测试和自动化工作 在本次讲座中 我们将学习 XCTSkip 一个根据运行时条件 管理测试执行的新 API 一些测试 特别是集成测试 有无法轻易模拟的要求或依赖关系 例如 app可能有无法用 iPhone 测试的 iPad 特定功能 在其它情况下 测试可能会使用 在运行旧版本 OS 的设备中不可用的 API 或者测试可能需要 定期离线进行维护的服务器 所有这些都是只能在运行时 确定的条件的例子 要处理环境不满足测试要求的情况 需要一个使测试执行有条件的方法 否则 测试编写者就剩下一个选择 提前返回并通过测试 或报告失败

    这两种方式都有缺点 通过测试表明代码能正常工作 但实际上 它未经过验证 但测试失败会提出一个不存在的问题 并可能会消耗分流资源

    幸运的是 当有需要有条件执行的测试时 你现在可以使用 XCTSkip 该 API 在 Xcode 11.4 中引入 可生成一个新的测试结果 测试可以通过或失败 或者使用 XCTSkip 用显式“跳过”结果进行标记

    Xcode 用这个图标来 突出显示被跳过的测试 使你能更清楚地了解 你的测试套件验证了什么 让我们在实践中 更好地了解它的工作方式 我这里有一个小项目 叫“花园游戏” 我一直在和我 3 岁的女儿 一起进行该项目 “花园游戏”帮助我们追踪后院的 所有植物、玩具和家具 我们最近决定增加对指针交互的支持 因为我们喜欢这个功能 而且主要是在 iPad 上使用该 app

    尽管只有三岁 我女儿完全接受测试驱动的开发 所以当然我们会为这个新功能 添加一些单元测试 现在你可以在屏幕上看到其中一个测试 碰巧 这个测试有两个条件 在这两个条件下执行它是没有意义的 首先 由于指针交互是在 iOS 13.4 中引入的 我们不能在旧版本的 OS 上运行这个测试 因此 我会添加一个将 XCTSkip 用于较旧的 iOS 版本的可用性保护

    其次 该 app 仅在 ipad 上允许指针交互 如果我们在其它类型的设备上运行 我们不需要执行这个测试 我会用“XCTSkipIf”来处理这种情况 首先 让我们用目的地来运行这个测试 在那里它可以正常执行 我会使用运行 iOS 14 的 iPad (构建成功)

    (测试成功) 你可以看到 它正如我们所期望的那样运行和通过 现在让我们在较老的设备上运行这个 运行 iOS 13 的 iPhone

    这次我要用我最喜欢的键盘快捷键 “controloptioncommandG”来运行测试 它只是重复之前的测试动作

    (已跳过测试 - 指针交互) 这次我们可以看到绿色的“通过”图标 被灰色的“跳过”图标所替代 并且源代码编辑器中的注释 显示跳过测试的位置和原因

    让我们看看在 Xcode 中 用户界面得出跳过结果的其它地方 首先是 Test Navigator

    在这里 我们可以看到 在测试旁显示的跳过 此外 你可以使用导航器底部的该按钮 过滤显示列表 以便仅显示跳过的测试

    现在让我们来看看测试报告

    以下是用跳过运行的结果

    当我展开测试详细信息时 我们会看到跳过发生的文件和行 以及跳过的原因 当我将鼠标悬停在这上面时 或许你注意到了行尾的两个按钮 第一个是“跳转”按钮 它转至跳过发生的位置和源 我会返回以便我们能探讨第二个按钮

    在 Xcode 12 中新增的“助手”按钮 会打开辅助编辑器 显示跳过的参考源位置 这使我们能同时查看测试报告和源代码 最后让我们看看 跳过如何在持续集成中出现

    这里有在三个不同设备上运行测试的 CI 系统的结果 我要使用“已跳过”过滤器 这样我们就可以仅仅专注于这个测试 当我展开测试时 我们会看到运行测试的每个设备的结果 第一台 iPad 为通过 其它设备为跳过 展开设备结果显示了 每个跳过的位置和原因 使所有这些信息触手可及 就是这样 我们看到了在各种条件下 在测试中使用 XCTSkip 有多容易 以及 Xcode 如何突出显示了 跳过的测试与正常通过或失败的测试 之间的差异 现在让我们仔细看看 API

    正如你在演示中看到的 有几种不同的方法来使用 XCTSkip 有两个抛出函数 XCTSkipIf 和 XCTSkipUnless 两个函数使用相同的参数 在表达式为真时 XCTSkipIf 跳过 在表达式为假时 XCTSkipUnless 跳过

    这里的例子展示了 在 iPad 以外的任何设备上运行时 测试可能如何跳过

    测试也可以直接抛出 XCTSkip 结构体 这与保护结合使用很方便 如 iOS 13.4 的可用性检查所示

    总结一下 一些测试 特别是集成测试 可能在某些条件下无法执行 你可以用 XCTSkip 以最准确地模拟测试运行结果的方式 来响应这些条件 这继而确保了更清晰的总体结果 尤其是在测试套件 在持续集成系统中执行时 感谢观看

    • 5:45 - Use XCTSkipUnless to bypass a test on devices other than iPad

      func testExample() throws {
      
          /// Example usage: skip test if device is not an iPad
          try XCTSkipUnless(UIDevice.current.userInterfaceIdiom == .pad, 
                    "Pointer interaction tests are for iPad only")
      
          // test...
      }
    • 5:58 - Use guard+XCTSkip to bypass a test on an older OS version

      func testExample() throws {
      
          /// Example usage: skip test if OS version is older than iOS 13.4
          guard #available(iOS 13.4, *) else {
              throw XCTSkip("Pointer interaction tests can only run on iOS 13.4+")
      
          // test...
      }

Developer Footer

  • 视频
  • WWDC20
  • XCTSkip 你的测试
  • 打开菜单 关闭菜单
    • iOS
    • iPadOS
    • macOS
    • Apple tvOS
    • visionOS
    • watchOS
    打开菜单 关闭菜单
    • Swift
    • SwiftUI
    • Swift Playground
    • TestFlight
    • Xcode
    • Xcode Cloud
    • SF Symbols
    打开菜单 关闭菜单
    • 辅助功能
    • 配件
    • App 扩展
    • App Store
    • 音频与视频 (英文)
    • 增强现实
    • 设计
    • 分发
    • 教育
    • 字体 (英文)
    • 游戏
    • 健康与健身
    • App 内购买项目
    • 本地化
    • 地图与位置
    • 机器学习
    • 开源资源 (英文)
    • 安全性
    • Safari 浏览器与网页 (英文)
    打开菜单 关闭菜单
    • 完整文档 (英文)
    • 部分主题文档 (简体中文)
    • 教程
    • 下载 (英文)
    • 论坛 (英文)
    • 视频
    打开菜单 关闭菜单
    • 支持文档
    • 联系我们
    • 错误报告
    • 系统状态 (英文)
    打开菜单 关闭菜单
    • Apple 开发者
    • App Store Connect
    • 证书、标识符和描述文件 (英文)
    • 反馈助理
    打开菜单 关闭菜单
    • Apple Developer Program
    • Apple Developer Enterprise Program
    • App Store Small Business Program
    • MFi Program (英文)
    • News Partner Program (英文)
    • Video Partner Program (英文)
    • 安全赏金计划 (英文)
    • Security Research Device Program (英文)
    打开菜单 关闭菜单
    • 与 Apple 会面交流
    • Apple Developer Center
    • App Store 大奖 (英文)
    • Apple 设计大奖
    • Apple Developer Academies (英文)
    • WWDC
    获取 Apple Developer App。
    版权所有 © 2025 Apple Inc. 保留所有权利。
    使用条款 隐私政策 协议和准则