跳转到内容

选择性测试

::: warning 要求

  • 一个 生成的项目
  • 一个 Tuist 账户和项目

:::

要使用生成的项目有选择性地运行测试,请使用 tuist test 命令。该命令会像 预热缓存 一样对你的 Xcode 项目进行哈希处理,并在成功时将哈希持久化,以确定未来运行中哪些内容发生了变化。

在未来的运行中,tuist test 会透明地使用哈希值来筛选测试,只运行自上次成功测试运行以来已更改的测试。

例如,假设存在以下依赖关系图:

  • FeatureA 有测试 FeatureATests,并依赖 Core
  • FeatureB 有测试 FeatureBTests,并依赖 Core
  • Core 有测试 CoreTests

tuist test 的行为如下:

操作描述内部状态
tuist test 调用运行 CoreTestsFeatureATestsFeatureBTests 中的测试FeatureATestsFeatureBTestsCoreTests 的哈希值被持久化
更新 FeatureA开发者修改了某个目标的代码与之前相同
tuist test 调用运行 FeatureATests 中的测试,因为其哈希已更改FeatureATests 的新哈希值被持久化
更新 Core开发者修改了某个目标的代码与之前相同
tuist test 调用运行 CoreTestsFeatureATestsFeatureBTests 中的测试FeatureATestsFeatureBTestsCoreTests 的新哈希值被持久化

tuist test 与二进制缓存直接集成,以使用本地或远程存储中尽可能多的二进制文件来缩短运行测试套件的构建时间。选择性测试与二进制缓存的结合可以显著减少在 CI 上运行测试所需的时间。

Tuist 支持对 UI 测试进行选择性测试。但是,Tuist 需要预先知道目标设备。只有指定了 destination 参数,Tuist 才会选择性地运行 UI 测试,例如:

Terminal window
tuist test --device 'iPhone 14 Pro'
# 或
tuist test -- -destination 'name=iPhone 14 Pro'
# 或
tuist test -- -destination 'id=SIMULATOR_ID'