如何阻止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
相关产品推荐
相关产品推荐

