大多数浏览器和
Developer App 均支持流媒体播放。
-
XCTSkip 你的测试
获取重要的测试结果——跳过无关紧要的测试结果。了解如何用 XCTSkip 有条件地避免在运行时进行测试。我们将带你了解如何返回此新测试结果,并更好地记录测试包中除了合格和不合格之外的测试。 要想充分利用本节内容,建议先熟悉 XCTest 和单元/ UI 测试。 观看 “在 Xcode 中测试”以获取入门知识。 了解 XCTSkip 之后,请进一步了解在测试方面的改进:观看“使用 XCTIssue对测试不合格进行分类”,“处理 UI 测试中的中断和警报”,“更快地获得测试结果”和“使用 XCTest 消除动画故障”。 要想了解如何改进测试套件,请查看“编写不合格测试”。
资源
相关视频
WWDC22
WWDC20
WWDC19
-
下载
(你好 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... }
-
-
正在查找特定内容?在上方输入一个主题,就能直接跳转到相应的精彩内容。
提交你查询的内容时出现错误。请检查互联网连接,然后再试一次。