"Missing required module 'XYZ'" on Unit Tests when using Swift Package Manager
After researching a bit, I got this fixed by adding -Xcc -fmodule-map-file=$(PROJECT_TEMP_ROOT)/GeneratedModuleMaps/macosx/<missing module name>.modulemap
to OTHER_SWIFT_FLAGS
in the test target.
Source:
- 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: Use -Xcc -fmodule-map-file=$(PROJECT_TEMP_ROOT)/GeneratedModuleMaps/iphonesimulator/<module name>.modulemap
if your platform is iOS.
UPDATE: Also, it seems that this is fixed on Xcode 11.2 beta2
This occurs because at the moment (Xcode 11.1, October 2019) SPM dependencies are not automatically linked to test targets.
We can manually link it by:
- Clicking on your Xcode project file (e.g.
Headlines
) - Select test target from the sidebar (e.g.
HeadlinesTests
) - Navigating to
Build Phases
in the top bar. - In the
Link Binary With Libraries
phase, add the required library from the SPM dependency (this looks like a white building within the SPM package ð¦). - You may also need to add the library to the
Dependencies
phase.