Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/unit-testing/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ios 从CLI运行swift测试时,是否可以指定平台目标?_Ios_Unit Testing_Swift Package Manager - Fatal编程技术网

Ios 从CLI运行swift测试时,是否可以指定平台目标?

Ios 从CLI运行swift测试时,是否可以指定平台目标?,ios,unit-testing,swift-package-manager,Ios,Unit Testing,Swift Package Manager,我的Package.swift看起来像 let package = Package( name: "MyPackage", platforms: [ .iOS(.v13) ], products: [ .library( name: "MyPackage", targets: ["MyPackage"]) ], dependencies: [ .package(ur

我的
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"])
  ]
)
当我运行
swift测试时

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.
为什么swift为macos运行的测试没有被列为受支持的平台?我能让swift为iOS运行测试吗,最好指定一些版本目标?在CLI中使用xcode有什么选择?

诀窍是:

  • 您认为
    .iOS(…)
    是为了将编译限制在一个平台上

  • 虽然它实际上是一条用于精确计算
    您的产品在该平台上支持的最低版本的线

它并没有说:
只编译.iOS X.y
,而是说
.iOS最小版本是X.y

SPM是Swift first
的一个工具,因此想要为
所有平台
构建,目前无法使用~system only参数(我也知道我是sad)


现在,如果您想拥有一个仅限iOS的软件包,这仍然是可能的,但是(您不需要xcodeproj文件)

//在iOS模拟器上编译和测试

xcodebuild-列表

xcodebuild-scheme-destination'generic/platform=iOS'

xcodebuild-scheme-sdk-iphonesimulator-destination'platform=iOS模拟器,name=iphone11'

xcodebuild-scheme test-sdk iphonesimulator-destination'platform=iOS模拟器,name=iphone11'



根据我的经验,我还想说,您可以有如下文件夹层次结构(使用xCode 12):

|
根项目文件夹/

  • Source/
    //源文件的文件夹
  • Example/
    //在其中创建一个xcodeproj
  • 测试///code>//您的测试文件~
  • YourPackage.xcworkspace
    • 在其中添加
      根文件夹
      ,以便访问您的软件包目标
    • 添加示例项目(并将包添加到其依赖项)
    • 最后创建一个新方案,在该方案中选择包的测试目标
现在,您已经准备好与示例和测试并行地开发包了

请记住,Swift Package Manager目前(2020年12月)没有仅在一个平台上构建的参数


希望它足够清楚。

谢谢,
平台
并不意味着一个人想要支持的平台列表,这真是一个令人沮丧的问题……是的,我同意你的观点,而且不仅仅是一个令人沮丧的问题,这是一个错误的东西。。有多少人真的采取了相同的方式:/(顺便说一句,如果它回答了这个问题,请随意标记它已完成o/)