在 Xcode 中以发布模式运行 Swift Package 测试

Pal*_*lle 9 xcode swift swift-package-manager

我试图在 Xcode 中以发布模式运行 Swift 包的测试目标,而不生成 Xcode 项目

但是,当我将测试方案的构建配置设置为发布时,构建会失败,因为缺少使用-enable-testing时必须传递给编译器的标志。@testable import

如何在 Xcode 中为 Swift 包添加此标志?请注意,传统的构建配置选项不可用,因为不存在 Xcode 项目。添加-Xswiftc -enable-testing为测试方案的启动参数不起作用。

gch*_*ita 16

您可以使用SPM 清单文件中swiftSettingstarget(name:dependency:path:exclude:sources:publicHeadersPath:cSettings:cxxSettings:swiftSettings:linkerSettings:)函数的参数传递 swift 编译器标志:

import PackageDescription

let package = Package(
    name: "MyPackage",
    targets: [
        .target(name: "MyPackage", swiftSettings: [.unsafeFlags(["-enable-testing"])]),
        .testTarget(name: "MyPackageTests", dependencies: ["MyPackage"]),
    ]
)
Run Code Online (Sandbox Code Playgroud)

另一方面,如果您想从终端运行测试,您可以-Xswiftc像平常一样使用选项:

swift test -c release -Xswiftc -enable-testing
Run Code Online (Sandbox Code Playgroud)

  • 伟大的!现在,如果仅在运行测试时提供“-enable-testing”,那就太好了。 (2认同)