Gui*_*uig 4 unit-testing ios swift-package-manager
我的Package.swift看起来像
let package = Package(
name: "MyPackage",
platforms: [
.iOS(.v13)
],
products: [
.library(
name: "MyPackage",
targets: ["MyPackage"])
],
dependencies: [
.package(url: "https://github.com/SnapKit/SnapKit.git", from: "5.0.0"),
],
targets: [
.target(
name: "MyPackage",
dependencies: [
"SnapKit",
]),
.testTarget(
name: "MyPackageTests",
dependencies: ["MyPackage"])
]
)
Run Code Online (Sandbox Code Playgroud)
当我跑步时,swift test我得到
error: the library 'MyPackage' requires macos 10.10, but depends on the product 'SnapKit' \
which requires macos 10.12; consider changing the library 'SurfUIKit' to require macos 10.12 \
or later, or the product 'SnapKit' to require macos 10.10 or earlier.
Run Code Online (Sandbox Code Playgroud)
为什么对未列为受支持平台的 macos 进行 swift 运行测试?我可以快速运行 iOS 测试,理想情况下指定一些版本目标吗?在 CLI 中使用 xcode 有什么替代方法?
诀窍是:
你认为这.iOS(...)是为了将编译限制在一个平台上
虽然它实际上是一条用于精确的线路,但what minimum version您的产品将为此平台提供支持
它没有说:only compile for .iOS X.y,但是.iOS min version is X.y
SPM是一种工具Swift first,因而要建立all~ platforms,并具有目前还没有办法使用〜系统只参数的〜(我知道我伤心过)。
现在,如果您想要一个仅限 iOS 的包,它仍然是可能的,但是您必须通过xcodebuild命令进行编译(并且您不需要 xcodeproj 文件)。
// Compile and test on iOS simulator
xcodebuild -list
xcodebuild -scheme <scheme> -destination 'generic/platform=iOS'
xcodebuild -scheme <scheme> -sdk iphonesimulator -destination 'platform=iOS Simulator,name=iPhone 11'
xcodebuild -scheme <scheme> test -sdk iphonesimulator -destination 'platform=iOS Simulator,name=iPhone 11'
根据我的经验,我还会说您可以拥有如下的文件夹层次结构(使用 xCode 12):
| Root Project folder/
Source/ // 源文件夹Example/ // 在其中创建一个 xcodeprojTests/ // 你的测试文件 ~YourPackage.xcworkspace
root folder其中以能够访问您的包目标现在,您已准备好与示例和测试并行开发您的包。
请记住,Swift 包管理器当前 (12/2020) 没有仅在一个平台上构建的参数。
希望它足够清楚。
| 归档时间: |
|
| 查看次数: |
406 次 |
| 最近记录: |