Добавление файлов Swift для тестирования целевых нефиксирующих модульных тестов
Я просмотрел много блогов и много чего пытался, чтобы мои модульные тесты Swift работали в Xcode 6.0.1 (или 6.1, если на то пошло). Я пытаюсь получить доступ к классам в моей целевой программе, поэтому я написал эту строку:
var vc: LoginViewController!
Конечно, я получаю сообщение об ошибке "Использование незанятого типа" LoginViewController ".
Затем я пытаюсь добавить LoginViewController
в свою тестовую цель, но затем я получаю ошибки "использования неразрешенных идентификаторов" в других классах моего проекта. Поэтому я пытаюсь добавить эти классы в свою тестовую цель, но в итоге я получаю бесконечный источник ошибок, например, снимок экрана ниже:
![xcode swift errors]()
Объявление всех моих классов как общедоступных, вызывает другие ошибки и похоже на плохую практику. Нужно ли вообще включать модульные тесты в проект Swift, который опирается на многие структуры и классы? Я просто хочу начать с чего-то почти такого же, как код в этой статье .
Ответы
Ответ 1
После сильной головной боли и ставя ее на задний план, я обнаружил, что основная проблема заключалась в том, что при добавлении файлов в тестовое целевое членство классы Objective-C все равно будут жаловаться. Я полагал, что это была старая проблема совместимости с новым способом, который Swift делает модульные тесты, но решение было моим тестовым объектом, не знал, что есть мостовой заголовок. Таким образом, я добавил ссылку на него в моих настройках построения тестовых целей, например:
![test target bridging header]()
Теперь кажется простым и очевидным, но ошибки были бесполезны. Никаких других решений, которые я видел для модульных тестов Swift, предположил, что это может быть проблемой, но теперь я знаю.
Тл; д-р
Для модульных тестов для работы в Swift целевая аудитория должна знать все, что знает цель приложения, поэтому добавьте ссылку на свой заголовок моста в своей тестовой цели тоже (если применимо).
Ответ 2
Я использую Xcode 6.1
Вам нужно добавить ваш быстрый файл в target membership
целевой цели
![enter image description here]()
Ответ 3
Если вы используете Xcode 7, теперь есть гораздо лучший способ справиться с этим, используя @testable import {ModuleName}
.
Просто убедитесь, что модуль, который вы хотите протестировать, имеет настройку сборки Enable Testability
, установленную на YES
.