我目前正在创建一个 Swift 包。默认情况下,Xcode生成的包包含XCTestManifests文件,其代码如下:
#if !canImport(ObjectiveC)
public func allTests() -> [XCTestCaseEntry] {
return [
testCase(TestPkgTests.allTests),
]
}
#endif
如您所见,这是返回所有测试用例的函数。但是,我很好奇什么时候会调用它以及在什么情况下会满足条件 !CanImport (ObjectiveC)
。
最佳答案
这是在 macOS 以外的平台上运行测试所必需的。
在 macOS 上,测试运行程序依赖于其他平台上不存在的 ObjectiveC 运行时,因此 canImport(ObjectiveC)
为 false
。 allTests()
函数是从 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/