Dan*_*row 4 uikit ios xctest swift-package-manager
我最近创建了我的第一个 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"
Run Code Online (Sandbox Code Playgroud)
但是,我真的很想进行单元测试。swift test...使用为 提到的相同参数运行swift build。但这给了我一个新的错误:
error: module 'XCTest' was created for incompatible target x86_64-apple-macos10.14
所以,我想我只是想知道是否有可能做到这一点。就像,我怎么能创建一个使用 UIKit 的 Swift 包,并让它可测试?
我一直在使用此论坛帖子中xcodebuild详述的命令,它要求您还生成一个:.xcodeproj
swift package generate-xcodeproj
xcodebuild build -sdk iphoneos -scheme 'MyPackage-Package'
xcodebuild test -destination 'name=iPhone 11' -scheme 'MyPackage-Package'
Run Code Online (Sandbox Code Playgroud)
但是,如果您使用的是 SPM 资源,则会遇到我在此处详述的问题:https : //bugs.swift.org/browse/SR-13773
我花了很多时间尝试运行一些复杂框架的测试。这些解决方案都不适合我。
我发现它generate-xcodeproj被标记为已弃用。我在这里找到了原因。
“...启动 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
Run Code Online (Sandbox Code Playgroud)
它已经奏效了。
| 归档时间: |
|
| 查看次数: |
701 次 |
| 最近记录: |