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

如何让fastlane在iOS项目中打印测试用例的错误信息?

问题原因

你在run_tests里设置了build_for_testing: true,这个参数的作用是仅构建测试相关的包,不会实际运行测试用例。所以fastlane只会告诉你构建成功,根本没执行那台失败的测试方法,自然不会报错。

解决方案:用scan(或调整run_tests参数)

是的,你需要用scan来处理测试任务,或者调整run_tests的参数让它真正运行测试。scan是fastlane专门用于运行iOS测试的工具,能自动执行测试、捕获失败信息,还能输出详细的测试结果,完全满足你要打印测试文件名、方法及成功/错误信息的需求。

方案1:直接用scan配置lane

修改你的Fastfile如下:

default_platform(:ios)

platform :ios do
  lane :unit_tests do
    scan(
      scheme: "CICDDemo",
      only_testing: "CICDDemoTests", # 可指定整个测试类,也可以写"CICDDemoTests/testFailure"单独跑这个失败方法
      device: "iPhone 14",
      output_style: :verbose, # 输出详细测试日志
      fail_build: true # 测试失败时直接终止流程,不会显示成功
    )
  end
end

方案2:调整run_tests参数(去掉build_for_testing)

如果你想继续用run_tests,只需要移除build_for_testing: true,让它默认执行测试:

lane :unit_tests do
  run_tests(
    scheme: "CICDDemo",
    only_testing: "CICDDemoTests",
    device: "iPhone 14",
    verbose: true # 开启详细输出,能看到每个测试方法的结果
  )
end
效果验证

执行fastlane unit_tests后,fastlane会启动模拟器运行测试。当测试失败时,日志里会明确显示:

  • 失败的测试类(CICDDemoTests)
  • 失败的方法名(testFailure)
  • 具体的断言错误(比如XCTAssertTrue failed: ("1 == 2") is not true)
    同时fastlane会终止流程,不会再显示"finished successfully"。

内容的提问来源于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 08:55:14