使用 Swift 包管理器时,单元测试中“缺少必需的模块‘XYZ’”

bet*_*rra 10 xcode ios swift

我按照https://developer.apple.com/videos/play/wwdc2019/408/的说明在 Xcode 11 上的 iOS 应用程序上使用 Swift Package Manager

一切看起来都很棒,除了单元测试现在不起作用。

导航面板 项目设置 错误

Bra*_*key 13

发生这种情况是因为目前(Xcode 11.1,2019 年 10 月)SPM 规范不会自动链接到测试目标。

我们可以通过以下方式手动链接它:

  1. 单击您的 Xcode 项目文件(例如Headlines
  2. 从侧边栏中选择测试目标(例如HeadlinesTests
  3. 导航到Build Phases顶部栏中。
  4. Link Binary With Libraries阶段中,从 SPM 依赖项中添加所需的库(这看起来像 SPM 包中的白色建筑物)。
  5. 您可能还需要将库添加到Dependencies阶段。

  • 谢谢你!我认为这是向前迈出的一步。然而,在我的一个项目中,我现在得到“类 XYZ 在 <<path>> 和 <<other_path>> 中实现。将使用两者之一。哪一个未定义。” 然后它在测试时崩溃了。 (6认同)
  • 我在 Xcode 12 beta 上也这样做了,但似乎存在内存问题```CLASS:类'Testing.TestOne'0x102b2b818小方法列表0x102b26e40不在不可变内存中```` (2认同)

Dee*_*pak 10

我在 Xcode 14.1 中遇到了类似的问题。出现错误Missing required module 'RxCocoaRuntime'

我的解决办法是:

  1. 转到项目目标并选择单元测试目标。
  2. 在单元测试目标下选择构建阶段
  3. 选择“将二进制文件与库链接”
  4. 添加了 RxSwift 和 RxCocoa 包。


bet*_*rra 4

经过一番研究后,我通过添加-Xcc -fmodule-map-file=$(PROJECT_TEMP_ROOT)/GeneratedModuleMaps/macosx/<missing module name>.modulemapOTHER_SWIFT_FLAGS测试目标中解决了这个问题。

来源:

PS:-Xcc -fmodule-map-file=$(PROJECT_TEMP_ROOT)/GeneratedModuleMaps/iphonesimulator/<module name>.modulemap如果您的平台是iOS,请使用。

更新:此外,这似乎已在Xcode 11.2 beta2上修复