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

