swift - 生成的 swift 包中的 XCTestManifests

标签 swift xcode swift-package-manager

我目前正在创建一个 Swift 包。默认情况下,Xcode生成的包包含XCTestManifests文件,其代码如下:

#if !canImport(ObjectiveC)
public func allTests() -> [XCTestCaseEntry] {
    return [
        testCase(TestPkgTests.allTests),
    ]
}
#endif

如您所见,这是返回所有测试用例的函数。但是,我很好奇什么时候会调用它以及在什么情况下会满足条件 !CanImport (ObjectiveC)

最佳答案

这是在 macOS 以外的平台上运行测试所必需的。

在 macOS 上,测试运行程序依赖于其他平台上不存在的 ObjectiveC 运行时,因此 canImport(ObjectiveC)falseallTests() 函数是从 LinuxMain.swift 文件调用的,您可以通过运行 swift test --generate-linuxmain 在 macOS 上生成它。

在较新的 SwiftPM 版本中,有一个在这些平台上运行测试的替代选项:swift test --enable-test-discovery。您可以在这里阅读更多相关信息:https://forums.swift.org/t/pitch-enable-test-discovery-by-default/36619

关于swift - 生成的 swift 包中的 XCTestManifests,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63302334/

相关文章:

swift - 使用 Swift Package Manager、Cocoa Pods 或其他工具将最小 GRDB 添加到 Xcode 项目

Swift 包管理器 ("Swift Build")在 xcode 中编译正常

swift - 使用 Realm swift 初始化列表值

swift - 过滤子关系集核心数据

ios - 无法在 .xcassets 中分配图像

xcode - 线程 1 : Stopped at breakpoint 1

swift - 在屏幕中间的 Apple Watch 上的 table 前查看图像(刷新动画)

ios - 以完整尺寸保存 UIImage,包括 UIImageView 的变换

ios - 如何从 iOS 的共享扩展中的扩展上下文中获取项目?

swift - 在 SPM(Swift 包管理器)中导入 .framework