单元测试目标中SPM模块未找到问题求助
解决Xcode 14.1(M1设备)中SPM模块在单元测试中找不到的问题
针对你遇到的添加@testable import MyApp后单元测试报错缺失MyAppTests.swiftdoc、abi.json等文件的问题,结合你已做的操作,试试以下几个针对性方案:
1. 确认SPM模块与测试目标的关联
打开项目的Package Dependencies面板,选中Firebase相关的所有模块,查看右侧的Target Membership,确保你的MyAppTests测试目标被勾选。SPM默认只会将依赖关联到主目标,测试目标需要手动勾选才能被正确引入。
2. 彻底清理构建缓存
- 按下
Cmd+Shift+K清理项目构建产物; - 按下
Cmd+Option+Shift+K彻底清理Xcode的构建目录; - 手动删除Derived Data:打开Xcode偏好设置→Locations,找到Derived Data的路径,删除整个文件夹;
- 重启Xcode后重新构建并运行测试。
3. 检查测试目标的Build Settings配置
- 搜索Framework Search Paths,确保包含
$(inherited),该配置会自动继承SPM生成的模块路径; - 搜索Test Host,确认值为
$(BUILT_PRODUCTS_DIR)/MyApp.app/MyApp(替换为你的主APP名称); - 搜索SWIFT_INCLUDE_PATHS,确保包含
$(inherited),避免模块头文件路径缺失。
4. 适配M1设备的架构设置
- 打开主目标和测试目标的Build Settings,搜索Architectures,设置为
Standard Architectures (Apple Silicon, Intel 64-bit); - 搜索Excluded Architectures,在Debug配置下清空该字段(部分M1设备的模拟器架构冲突会导致模块加载失败)。
5. 调整主目标的分发构建设置
打开主目标的Build Settings,搜索Build Libraries for Distribution,将该选项设置为NO。开启该选项后生成的模块格式可能与单元测试的兼容性不佳,尤其是SPM引入的第三方库。
6. 重新添加SPM依赖
如果以上方法都无效,先移除Firebase的SPM依赖,然后重新添加并选择9.6.0版本,添加过程中务必同时勾选主目标和测试目标,确保依赖被正确关联。
内容的提问来源于stack exchange,提问作者thelioncubofcintra
相关产品推荐
相关产品推荐

