使用Swift软件包管理器时,单元测试上出现“缺少所需模块”XYZ“”

vawmfj5a  于 2022-10-31  发布在  Swift
关注(0)|答案(3)|浏览(210)

我正在Xcode 11上的iOS应用程序上使用Swift Package Manager,并遵循https://developer.apple.com/videos/play/wwdc2019/408/中的说明
一切看起来都很好,除了单元测试现在不起作用。
第一次

dldeef67

dldeef671#

这似乎是因为SPM依赖项可能不会自动链接到测试目标。
我们可以通过以下方式手动链接:
1.点按Xcode项目文件(例如Headlines
1.从侧边栏中选择测试目标(例如HeadlinesTests
1.导航到顶栏中的Build Phases
1.在Link Binary With Libraries阶段,从SPM依赖项中添加所需的库(这看起来像SPM包中的一个白色建筑📦)。
1.您可能还需要将库添加到Dependencies阶段。

7rtdyuoh

7rtdyuoh2#

经过一点研究,我通过在测试目标中将-Xcc -fmodule-map-file=$(PROJECT_TEMP_ROOT)/GeneratedModuleMaps/macosx/<missing module name>.modulemap添加到OTHER_SWIFT_FLAGS来修复这个问题。
资料来源:

  • https://github.com/apple/swift-nio/issues/1128#issuecomment-527566361
  • https://github.com/ReactiveX/RxSwift/issues/2057#issuecomment-538371425
  • https://github.com/swift-aws/aws-sdk-swift/issues/167#issuecomment-527650662

PS:如果你的平台是iOS,请使用-Xcc -fmodule-map-file=$(PROJECT_TEMP_ROOT)/GeneratedModuleMaps/iphonesimulator/<module name>.modulemap
更新:此外,这似乎是固定的Xcode 11.2 beta2

kyxcudwk

kyxcudwk3#

我在创建了一个多平台应用程序并选中了创建测试的复选框后,在Xcode 13中看到了这个问题。问题似乎是Xcode创建了UI测试,而不是我所期望的单元测试。我刚刚创建了一个新的单元测试目标,在将我的应用程序导入测试文件时,一切都按预期运行。

相关问题