ios 如何测试使用UIKit的Swift软件包?

tkqqtvp1  于 2023-01-14  发布在  iOS
关注(0)|答案(3)|浏览(147)

我最近创建了我的第一个Swift软件包。它目前只在iOS中使用,如果它去其他任何地方,它 * 可能 * 在tvOS上,但那就是它了。
我在使用UIKit时遇到了麻烦。我在这里看到了这张纸条,这真的帮助解决了我的问题:https://stackoverflow.com/a/58684636/1435520
我使用的命令(上面提到的)是:

swift build -Xswiftc "-sdk" -Xswiftc "`xcrun --sdk iphonesimulator --show-sdk-path`" -Xswiftc "-target" -Xswiftc "x86_64-apple-ios13.0-simulator"

然而,我真的很想进行单元测试,用前面提到的swift build的参数运行swift test...,但是这给了我一个新的错误:
error: module 'XCTest' was created for incompatible target x86_64-apple-macos10.14
所以,我想我只是想知道是否有可能做到这一点。比如,我如何创建一个Swift包,使用UIKit,并让它可测试?

ddrv8njm

ddrv8njm1#

我一直在使用xcodebuild命令作为详细的in this forum post,它还要求您生成一个.xcodeproj

swift package generate-xcodeproj
xcodebuild build -sdk iphoneos -scheme 'MyPackage-Package'
xcodebuild test -destination 'name=iPhone 11' -scheme 'MyPackage-Package'

但是如果您使用SPM资源,您将遇到我在这里详细介绍的问题:https://bugs.swift.org/browse/SR-13773

0x6upsns

0x6upsns2#

我花了很多时间尝试运行一些复杂框架的测试,但没有一个解决方案对我有效。
我发现generate-xcodeproj被标记为弃用。原因我已经找到了here
“...从Xcode 11开始,Xcode直接支持打开和构建包...”
因此,我直接在包文件夹中运行xcodebuild test,而不创建xcodeproj。

xcodebuild -scheme '<package name>-Package' -sdk iphonesimulator -destination 'platform=iOS Simulator,name=iPad Air (4th generation),OS=15.0' test

它已经奏效了。

lmvvr0a8

lmvvr0a83#

我试图在CI上构建和测试我的内部包,但没有任何效果,并且生成xcodeproj将在未来被弃用。
对我来说,有效的方法是只指定目标为macOS 10.15,不做任何其他操作:

swift test -Xswiftc -target -Xswiftc x86_64-apple-macosx10.15

相关问题