探究 Xcode 命令行用法二:xcodebuild 测试实践

本文深入探讨了Xcode的测试概念,如测试包、用例和方法,以及如何使用xcodebuild命令进行自动化测试。介绍了多环境并行测试、测试计划、代码覆盖率等关键用法,并提供了实际的测试实践案例,揭示了存在的问题,如本地化测试的挑战。文章还预告了后续关于xcodebuild打包、签名、上传与分发等主题的探讨。
摘要由CSDN通过智能技术生成

本文还是 adat 项目的延伸,瞄准开发周期的测试环节,主要介绍 Xcode 范畴内的测试概念和自动化测试实践,不会讨论如何编写高质量的测试用例。文中涉及到 Xcode 构建的许多概念,大部分已在前两篇文章中有所说明,建议先大致浏览一遍。



内容概览

  • Xcode 测试相关的概念
  • xcodebuild 命令中测试相关的用法
  • xcodebuild 测试实践
  • 存在的问题


Xcode 测试相关的概念

在开始测试之前,有必要简单介绍一下 Xcode 中测试相关的概念,这对于编写自动化测试命令非常重要。因为文中会反复提到这些概念,使用时也必须清楚这些概念之间的关系。


测试包

Test Bundle,专门用于测试的 Target。Xcode 13.1 新建项目时勾选 Include Tests 会自动创建单元测试包和 UI 测试包。测试包内组织了多个测试用例。


测试用例

Test Case,专门用于测试的类 Class,继承自 XCTestCase。在测试用例内导入需要测试的头文件,设置初始环境,并编写多个测试方法。


测试方法

Test Method,专门用于测试的方法,必须是实例方法且方法名必须以 test 开头且没有参数和返回值,否则不会被 Xcode 识别为测试方法,也就不会被自动调用。


单元测试

Unit Test,是一种测试维度,主要测试代码逻辑,粒度较细,依赖良好的架构设计并编写可测试的代码(Testable Code)。在测试方法中调用需要测试的代码,并用 XCTAssert 及相关方法来判断结果。


UI 测试

UI Test,在较粗维度上进行测试,模拟用户的操作。Xcode 用 UI Test Recorder 来记录操作序列,自动将序列以代码的形式插入到测试方法中,运行测试方法就是把序列“重放”一次,以观察同样的操作在不同设备环境上的表现。UI 测试可以在需要的位置进行截屏,保留现场。


测试计划

Test Plan,一个以 .xctestplan 为扩展名的 JSON 格式文件,组合了测试包和配置(Configuration),可以分别设置测试包、测试用例、测试方法是否启用以决定是否参与测试,配置包含一个默认配置和多个自定义配置,大部分配置项来自于 Scheme。自定义配置未指定的配置项由默认配置的对应配置项决定。

在 Scheme Manager 中,可以将 Scheme 转为测试计划,也可以在 Xcode -> Product -> Test Plan 创建新的测试计划。对于大型项目,建议将 Scheme 转为测试计划,因为测试计划包含更多配置项,比如启用测试超时、重复测试等,而且 JSON 文件比 Scheme 更易于版本管理。

必须要为测试计划创建至少一个自定义配置,否则测试计划内的任何测试都将无法运行。在将 Scheme 转为测试计划时,Xcode 帮我们自动完成了这个操作。你也可以添加额外的自定义配置。

在这里插入图片描述
在这里插入图片描述

测试报告

Test Reports,列出了每个测试用例的测试结果:执行步骤、耗时、截屏、日志等。
在这里插入图片描述

代码覆盖率

Code Coverage,显示测试用例覆盖了多少代码,Xcode 提供了可视化界面,可据此来完善测试用例。启用代码覆盖率并执行测试后,代码编辑器右边缘就会显示某行被测试的次数。
在这里插入图片描述



xcodebuild 命令中测试相关的用法

了解完测试相关的概念,结合 探究 Xcode 命令行用法一:Xcode 构建必备认知 一文对命令行的认知,就可以对 xcodebuild 测试命令进行分析了。在 Terminal 中执行man xcodebuild提取测试相关的选项,对每个选项和操作的用法说

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值