生成的 swift 包中的 XCTestManifests
XCTestManifests in generated swift package
我目前正在创建一个 Swift 包。默认情况下,Xcode生成的包包含XCTestManifests文件,代码如下:
#if !canImport(ObjectiveC)
public func allTests() -> [XCTestCaseEntry] {
return [
testCase(TestPkgTests.allTests),
]
}
#endif
如您所见,这是returns所有测试用例的函数。但是,我很好奇它什么时候会被调用,在什么情况下会满足条件!CanImport (ObjectiveC)
。
这是 运行 在 macOS 以外的平台上进行测试所必需的。
在 macOS 上,测试运行器依赖于其他平台上不存在的 ObjectiveC 运行时,因此 canImport(ObjectiveC)
是 false
。 allTests()
函数是从 LinuxMain.swift
文件调用的,您可以在 macOS 上通过 运行 swift test --generate-linuxmain
.
生成它
在较新的 SwiftPM 版本中,有一个替代选项可以在这些平台上进行 运行 测试:swift test --enable-test-discovery
。您可以在这里阅读更多相关信息:https://forums.swift.org/t/pitch-enable-test-discovery-by-default/36619
Swift 5.4:包括自动测试发现
Swift 5.4 (April 26, 2021 release) 默认包含测试发现。
Automatic test discovery is now the default on all platforms
swift test --enable-test-discovery
不再需要。
Swift 5.4+ swift package init
模板不生成 allTests
和 XCTestManifests.swift
.
我目前正在创建一个 Swift 包。默认情况下,Xcode生成的包包含XCTestManifests文件,代码如下:
#if !canImport(ObjectiveC)
public func allTests() -> [XCTestCaseEntry] {
return [
testCase(TestPkgTests.allTests),
]
}
#endif
如您所见,这是returns所有测试用例的函数。但是,我很好奇它什么时候会被调用,在什么情况下会满足条件!CanImport (ObjectiveC)
。
这是 运行 在 macOS 以外的平台上进行测试所必需的。
在 macOS 上,测试运行器依赖于其他平台上不存在的 ObjectiveC 运行时,因此 canImport(ObjectiveC)
是 false
。 allTests()
函数是从 LinuxMain.swift
文件调用的,您可以在 macOS 上通过 运行 swift test --generate-linuxmain
.
在较新的 SwiftPM 版本中,有一个替代选项可以在这些平台上进行 运行 测试:swift test --enable-test-discovery
。您可以在这里阅读更多相关信息:https://forums.swift.org/t/pitch-enable-test-discovery-by-default/36619
Swift 5.4:包括自动测试发现
Swift 5.4 (April 26, 2021 release) 默认包含测试发现。
Automatic test discovery is now the default on all platforms
swift test --enable-test-discovery
不再需要。
Swift 5.4+ swift package init
模板不生成 allTests
和 XCTestManifests.swift
.