Xcode测试间歇性失败:NSCocoaErrorDomain Code=516/17文件已存在
Xcode Tests间歇性失败:Touching App.app阶段冻结后因日志文件已存在报错
问题现象
执行Xcode Tests时会间歇性失败:构建卡在Touching App.app阶段约5分钟,随后报错退出,核心错误是日志文件重名无法移动,完整错误日志如下:
2023-03-13 10:43:47.473 xcodebuild[3695:44355] IDETestOperationsObserverDebug: Failure collecting logarchive: Error Domain=NSCocoaErrorDomain Code=516 "“test-session-systemlogs-2023.03.13_10-41-40-+0000.logarchive”无法移动到“My Mac_CF8A13ED-B04E-49BF-AD2D-FFDF9B7679D9”,因为同名项目已存在。" UserInfo={NSSourceFilePathErrorKey=/var/tmp/test-session-systemlogs-2023.03.13_10-41-40-+0000.logarchive, NSUserStringVariant=( Move), NSDestinationFilePath=/var/folders/xq/sfn_fz953jb36ptp2g68wc2r0000gn/T/XCUITestOutput780702278/Test-Debug.xcresult/Staging/2_Test/Diagnostics/My Mac_CF8A13ED-B04E-49BF-AD2D-FFDF9B7679D9/test-session-systemlogs-2023.03.13_10-41-40-+0000.logarchive, NSFilePath=/var/tmp/test-session-systemlogs-2023.03.13_10-41-40-+0000.logarchive, NSUnderlyingError=0x600001593180 {Error Domain=NSPOSIXErrorDomain Code=17 "文件已存在"}} 2023-03-13 10:43:47.476 xcodebuild[3695:16404] [MT] IDETestOperationsObserverDebug: 342.133 elapsed -- Testing started completed. 2023-03-13 10:43:47.476 xcodebuild[3695:16404] [MT] IDETestOperationsObserverDebug: 0.000 sec, +0.000 sec -- start 2023-03-13 10:43:47.476 xcodebuild[3695:16404] [MT] IDETestOperationsObserverDebug: 342.133 sec, +342.133 sec -- end
解决方案
清理Xcode缓存与派生数据
打开Xcode,点击顶部菜单Xcode->Settings->Locations,找到Derived Data项,点击右侧箭头打开文件夹,删除当前项目对应的派生数据文件夹;同时按下Command + Shift + Option + K清理构建文件夹,Command + Shift + K清理构建产物。手动删除残留的临时日志文件
终端执行以下命令,清理错误中提到的两类临时文件:# 清理/var/tmp下的测试日志归档文件 rm -rf /var/tmp/test-session-systemlogs-*.logarchive # 清理XCUITest输出目录下的残留文件 rm -rf /var/folders/xq/sfn_fz953jb36ptp2g68wc2r0000gn/T/XCUITestOutput*若提示权限不足,在命令前添加
sudo并输入密码。关闭测试的系统日志收集功能
打开项目的Test Scheme(Command + Shift + ,),切换到Test标签页,选择Options子标签,找到Diagnostics区域,取消勾选Collect System Logs,避免Xcode生成重复的日志文件。更新Xcode至最新稳定版
这类文件操作的间歇性bug通常会在后续Xcode版本中修复,前往App Store或Apple开发者官网下载最新版Xcode安装。重启Mac
系统临时文件锁、残留进程可能导致文件无法正常移动,重启后可释放相关资源,清除异常状态。
内容的提问来源于stack exchange,提问作者MQLN
相关产品推荐
相关产品推荐

