Dov*_*Dov 6 macos xcode unit-testing ios swift
我的应用程序中有一个 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 {
...
}
}
Run Code Online (Sandbox Code Playgroud)
我的应用程序编译得很好,但我有一个单元测试包(在 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 {
^
Run Code Online (Sandbox Code Playgroud)
它看起来像是 Swift 文件以某种方式被包含在单元测试包中两次,但我不知道这怎么可能。当我从文件检查器的“目标成员资格”部分取消选中单元测试目标时,我会收到该文件中未定义类的其他错误。
如何清除它以使我的单元测试再次编译并测试需要此文件的类?
作为解决方法,我将类扩展移动到不包含在单元测试包中的另一个文件中,因为它只需要拖放,而测试不涉及拖放。我仍然很好奇是什么导致了这个问题,以及如何将此扩展纳入我的测试中,以防我确实想测试它。
| 归档时间: |
|
| 查看次数: |
287 次 |
| 最近记录: |