运行 Swift Xcode 发布模式下的包测试
Run Swift Package tests in release mode in Xcode
我正在尝试 运行 Xcode 中 Swift 包的测试目标 在发布模式下 不生成 Xcode 项目.
但是,当我将测试方案的构建配置设置为发布时,构建失败,因为缺少 -enable-testing
标志,该标志必须在使用 @testable import
时传递给编译器。
如何在 Xcode 中为 Swift 包添加此标志?请注意,传统的构建配置选项不可用,因为 Xcode 项目不存在。添加 -Xswiftc -enable-testing
作为测试方案的启动参数不起作用。
您可以通过删除 import
语句的 @testable
属性来为 Release 编译测试:
// MyPackageTests.swift
import XCTest
import MyPackage
...
这是部分解决方案,因为您的测试无法访问模块中的内部实体,但它非常适合 public 个。
您可以使用 SPM 清单文件中 target(name:dependencies:path:exclude:sources:publicHeadersPath:cSettings:cxxSettings:swiftSettings:linkerSettings:) 函数的 swiftSettings
参数传递 swift 编译器标志:
import PackageDescription
let package = Package(
name: "MyPackage",
targets: [
.target(name: "MyPackage", swiftSettings: [.unsafeFlags(["-enable-testing"])]),
.testTarget(name: "MyPackageTests", dependencies: ["MyPackage"]),
]
)
另一方面,如果您想 运行 从终端进行测试,您可以像往常一样使用 -Xswiftc
选项:
swift test -c release -Xswiftc -enable-testing
我正在尝试 运行 Xcode 中 Swift 包的测试目标 在发布模式下 不生成 Xcode 项目.
但是,当我将测试方案的构建配置设置为发布时,构建失败,因为缺少 -enable-testing
标志,该标志必须在使用 @testable import
时传递给编译器。
如何在 Xcode 中为 Swift 包添加此标志?请注意,传统的构建配置选项不可用,因为 Xcode 项目不存在。添加 -Xswiftc -enable-testing
作为测试方案的启动参数不起作用。
您可以通过删除 import
语句的 @testable
属性来为 Release 编译测试:
// MyPackageTests.swift
import XCTest
import MyPackage
...
这是部分解决方案,因为您的测试无法访问模块中的内部实体,但它非常适合 public 个。
您可以使用 SPM 清单文件中 target(name:dependencies:path:exclude:sources:publicHeadersPath:cSettings:cxxSettings:swiftSettings:linkerSettings:) 函数的 swiftSettings
参数传递 swift 编译器标志:
import PackageDescription
let package = Package(
name: "MyPackage",
targets: [
.target(name: "MyPackage", swiftSettings: [.unsafeFlags(["-enable-testing"])]),
.testTarget(name: "MyPackageTests", dependencies: ["MyPackage"]),
]
)
另一方面,如果您想 运行 从终端进行测试,您可以像往常一样使用 -Xswiftc
选项:
swift test -c release -Xswiftc -enable-testing