Избыточное соответствие протоколу только в модульном тестировании - PullRequest
1 голос
/ 16 мая 2019

В моем приложении есть класс 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 как-то включается в комплект модульных тестов дважды, ноЯ не знаю, как это было бы возможно.Когда я снимаю флажок с цели модульного теста в разделе «Членство в целевой группе» Инспектора файлов, я получаю другие ошибки для классов в этом файле, которые не определены.

Как мне это исправить, чтобы мои модульные тестыснова скомпилировать и протестировать классы, которым нужен этот файл?

1 Ответ

0 голосов
/ 17 мая 2019

В качестве обходного пути я переместил расширение класса в другой файл, который не включен в комплект модульных тестов, поскольку он требуется только для перетаскивания, которого тесты не касаются. Мне все еще любопытно, что вызвало это, и как включить это расширение в мои тесты, на случай, если это было то, что я действительно хотел протестировать.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...