选择性测试
选择性测试 {#selective-testing}
Section titled “选择性测试 {#selective-testing}”::: warning 要求
- 一个
生成的项目 - 一个
Tuist 账户和项目
:::
要使用生成的项目有选择性地运行测试,请使用 tuist test 命令。该命令会像
在未来的运行中,tuist test 会透明地使用哈希值来筛选测试,只运行自上次成功测试运行以来已更改的测试。
例如,假设存在以下依赖关系图:
FeatureA有测试FeatureATests,并依赖CoreFeatureB有测试FeatureBTests,并依赖CoreCore有测试CoreTests
tuist test 的行为如下:
| 操作 | 描述 | 内部状态 |
|---|---|---|
tuist test 调用 | 运行 CoreTests、FeatureATests 和 FeatureBTests 中的测试 | FeatureATests、FeatureBTests 和 CoreTests 的哈希值被持久化 |
更新 FeatureA | 开发者修改了某个目标的代码 | 与之前相同 |
tuist test 调用 | 运行 FeatureATests 中的测试,因为其哈希已更改 | FeatureATests 的新哈希值被持久化 |
更新 Core | 开发者修改了某个目标的代码 | 与之前相同 |
tuist test 调用 | 运行 CoreTests、FeatureATests 和 FeatureBTests 中的测试 | FeatureATests、FeatureBTests 和 CoreTests 的新哈希值被持久化 |
tuist test 与二进制缓存直接集成,以使用本地或远程存储中尽可能多的二进制文件来缩短运行测试套件的构建时间。选择性测试与二进制缓存的结合可以显著减少在 CI 上运行测试所需的时间。
UI 测试 {#ui-tests}
Section titled “UI 测试 {#ui-tests}”Tuist 支持对 UI 测试进行选择性测试。但是,Tuist 需要预先知道目标设备。只有指定了 destination 参数,Tuist 才会选择性地运行 UI 测试,例如:
tuist test --device 'iPhone 14 Pro'# 或tuist test -- -destination 'name=iPhone 14 Pro'# 或tuist test -- -destination 'id=SIMULATOR_ID'