【发布时间】:2019-10-03 18:37:33
【问题描述】:
我的应用中有一个 Objective-C 类 (MyClass)。在一个 Swift 文件中,我添加了一个扩展,使其符合NSFilePromiseProviderDelegate 协议/接口:
extension MyClass: NSFilePromiseProviderDelegate {
public func filePromiseProvider(_ filePromiseProvider: NSFilePromiseProvider, fileNameForType fileType: String) -> String {
...
}
public func filePromiseProvider(_ filePromiseProvider: NSFilePromiseProvider, writePromiseTo url: URL, completionHandler: @escaping (Error?) -> Void) {
...
}
public func operationQueue(for filePromiseProvider: NSFilePromiseProvider) -> OperationQueue {
...
}
}
我的应用程序编译良好,但我有一个单元测试包(在 Xcode 中过去称为“逻辑测试”包),它还编译了应用程序包之外的所有类。当我添加包含此扩展名的 Swift 文件时,我的单元测试中出现编译器错误:
<path>/NSPasteboard+ACAdditions.swift:205:18: error: redundant conformance of 'MyClass' to protocol 'NSFilePromiseProviderDelegate'
extension MyClass: NSFilePromiseProviderDelegate {
^
AppName.MyClass:1:11: note: 'MyClass' declares conformance to protocol 'NSFilePromiseProviderDelegate' here
extension MyClass : NSFilePromiseProviderDelegate {
^
这使得 Swift 文件看起来像是两次被包含在单元测试包中,但我不知道这怎么可能。当我从文件检查器的“目标成员资格”部分取消选中单元测试目标时,我得到了该文件中未定义类的其他错误。
如何清除此问题以使我的单元测试再次编译并测试需要此文件的类?
【问题讨论】:
-
我遇到了同样的问题,但在我的情况下,解决方法没有帮助,因为我正在尝试测试扩展的行为。 (它是对在 Objective-C 中定义的枚举的扩展,以符合 CustomStringConvertible。)
-
两年后同样的问题。我也无法将其从测试目标中删除。找到任何解决方案了吗?
-
在扩展 SCNVector3 的版本 12.3 (12C33) 上发现了这个
标签: ios swift xcode macos unit-testing