Xcode为何丢失创建单元测试选项?如何恢复并解决测试异常问题
解决Xcode无法创建带单元测试项目及手动添加后的运行问题
我来帮你搞定这个Xcode单元测试的麻烦,分两部分处理:先找回创建项目时的单元测试选项,再解决手动添加测试后的运行故障。
一、找回创建新项目时的「Include Unit Tests」选项
你提到正常界面有这个选项但现在消失了,试试这几个方案:
- 清除Xcode派生数据:打开Xcode顶部菜单栏的
Xcode>Settings>Locations,找到Derived Data,点击旁边的箭头打开文件夹,全选删除里面的内容,然后重启Xcode再创建项目试试。这是最常见的修复Xcode界面异常的方法。 - 重置Xcode模板缓存:如果清除派生数据没用,打开终端执行下面的命令,清除模板缓存和Xcode缓存:
执行完重启Xcode,再创建新项目应该就能看到选项了。rm -rf ~/Library/Developer/Xcode/Templates rm -rf ~/Library/Caches/com.apple.dt.Xcode - 检查Xcode版本与系统兼容性:如果你最近更新了Xcode或macOS,可能存在适配问题。试试重新下载安装对应版本的Xcode,或者确认你的系统版本满足当前Xcode的最低要求。
二、解决手动添加单元测试后的运行问题
手动加了测试但Cmd+U跑不起来,还要显式导入、出现链接错误或EXC_BAD_INSTRUCTION,基本是测试目标的配置没做好,按步骤排查:
- 配置测试目标的依赖:
- 打开项目文件,左侧导航栏选中你的测试目标,切换到
Build Phases标签。 - 在
Target Dependencies里添加你的主应用/框架目标,让测试目标能正确依赖主代码。 - 在
Link Binary With Libraries中添加主目标的产物(比如主应用的.app或者框架的.framework)。
- 打开项目文件,左侧导航栏选中你的测试目标,切换到
- 调整Build Settings关键项:
- 找到
Product Module Name,确保和主目标的模块名完全一致(Swift项目尤其看重这个,模块名不对就找不到对象)。 - 检查
Test Host设置,应该指向主应用的路径,格式大概是$(BUILT_PRODUCTS_DIR)/你的主应用名.app/你的主应用名。 - Swift项目要确保主目标的
Enable Testability在Debug模式下设为YES(默认是开的,但如果之前改了要调回来)。
- 找到
- 修复导入和运行异常:
- 需要显式导入才能找到对象,说明测试目标没正确关联主模块。确认主目标的模块名没有特殊字符,测试目标的
Import Paths包含主目标的头文件/模块路径。 - 出现
EXC_BAD_INSTRUCTION或链接错误,先检查主目标编译是否正常(Cmd+B),然后清理项目(Cmd+Shift+K)再重新构建,之后再运行测试(Cmd+U)。如果还是不行,检查主代码里有没有未实现的方法、循环引用或者内存问题。
- 需要显式导入才能找到对象,说明测试目标没正确关联主模块。确认主目标的模块名没有特殊字符,测试目标的
内容的提问来源于stack exchange,提问作者Karl
相关产品推荐
相关产品推荐

