我在使用 Swift 包管理器时看到了仅测试依赖项的提及,但无法让它们工作。例如:
https://lists.swift.org/pipermail/swift-evolution/Week-of-Mon-20160104/005409.html https://github.com/apple/swift-package-manager/pull/74 http://blog.krzyzanowskim.com/2016/08/09/package-swift-manual/#testDependency
我想要的是在我的 XCtests 中使用依赖项(例如,对于特定目标),但不应用于已部署的包中。
如果能提供工作示例,我们将不胜感激。
目前 Swift 包管理器中禁用了“仅测试依赖项”功能。它最初是实现的,但在这次提交中被删除了。
来自提交的描述:
从 PackageDescription 中删除测试依赖项 此功能应该仅支持根的依赖关系 包,但在某些时候它停止工作,但 API 仍然 保持开放。此补丁删除了公共 API。这是一个有效且 期望的功能应该在完成后返回 对快速进化的正确回顾。
alternate Package.swift 进行测试,在 CI 上执行测试时会覆盖原始包(请参阅他们的 travis 配置文件)。它并不优雅,但很好,它可以完成工作,直到 SPM 恢复这个非常需要的功能。
SE-0226提到它得到部分支持。
从Swift5.9开始全面支持。这是我的 SPM 之一的包清单。我只需要在测试用例中测试 WebDAV 功能。
// The swift-tools-version declares the minimum version of Swift required to build this package.
import PackageDescription
let package = Package(
name: "FilesProvider",
platforms: [
.iOS(.v13),
.tvOS(.v13),
.macOS(.v10_15),
.visionOS(.v1)
],
products: [
// Products define the executables and libraries produced by a package, and make them visible to other packages.
.library(
name: "FilesProvider",
targets: ["FilesProvider"]
)
],
dependencies: [
.package(path: "../GCDWebServer")
],
targets: [
.target(name: "FilesProvider",
dependencies: [],
path: "Sources"
),
.testTarget(name: "FilesProviderTests",
dependencies: ["FilesProvider",
.product(name: "GCDWebDAVServer",package: "GCDWebServer")
],
path: "Tests"
),
]
)
是的,它就像一个魅力: