You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何阻止Fastlane执行UITests套件?指定单元测试仍触发UI测试问题

解决Fastlane scan仍执行UITests测试套件的问题

问题分析

你配置了only_testing: 'CICDDemoTests'但Fastlane依然执行CICDDemoUITests并导致崩溃,核心原因通常是:

  • 当前指定的Scheme(CICDDemo)默认包含了UITests测试目标
  • only_testing的配置未完全限制测试范围
  • skip_build: true复用了包含UITests的旧构建产物

解决方案

1. 调整Scheme的Test目标配置

打开Xcode,通过Product > Scheme > Edit Scheme进入Scheme编辑页:

  • 切换到Test标签
  • 从测试目标列表中移除CICDDemoUITests,仅保留CICDDemoTests
  • 保存Scheme后重新运行Fastlane

2. 优化only_testing配置(精确指定)

尝试用数组形式或更具体的路径指定测试目标,确保扫描只识别单元测试:

scan(
    # 其他原有配置...
    only_testing: ['CICDDemoTests'],
    # 如需更精准可指定测试类:only_testing: ['CICDDemoTests/YourUnitTestClass']
    # 其他原有配置...
)

3. 配合skip_testing显式排除UITests

添加skip_testing参数双重保险,强制跳过UITests套件:

scan(
    # 其他原有配置...
    only_testing: 'CICDDemoTests',
    skip_testing: 'CICDDemoUITests',
    # 其他原有配置...
)

4. 临时移除skip_build: true验证

skip_build: true会复用旧构建产物,如果之前的构建包含UITests,就会被执行。先注释该参数,重新构建并运行测试:

# skip_build: true, # 先注释掉这个参数

若问题解决,后续可重新构建单元测试专属产物后再启用该参数。

5. 直接指定test_targets参数

如果以上方法无效,尝试用test_targets直接指定要运行的测试目标:

scan(
    # 其他原有配置...
    test_targets: ['CICDDemoTests'],
    # 其他原有配置...
)

验证方法

本地执行bundle exec fastlane unit_tests,查看日志是否不再出现CICDDemoUITests-Runner相关启动信息,确认仅运行单元测试套件。

内容的提问来源于stack exchange,提问作者batman

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.08 01:48:19