Подтвердить что ты не робот

Добавление файлов Swift для тестирования целевых нефиксирующих модульных тестов

Я просмотрел много блогов и много чего пытался, чтобы мои модульные тесты Swift работали в Xcode 6.0.1 (или 6.1, если на то пошло). Я пытаюсь получить доступ к классам в моей целевой программе, поэтому я написал эту строку:

var vc: LoginViewController!

Конечно, я получаю сообщение об ошибке "Использование незанятого типа" LoginViewController ".

Затем я пытаюсь добавить LoginViewController в свою тестовую цель, но затем я получаю ошибки "использования неразрешенных идентификаторов" в других классах моего проекта. Поэтому я пытаюсь добавить эти классы в свою тестовую цель, но в итоге я получаю бесконечный источник ошибок, например, снимок экрана ниже:

xcode swift errors

Объявление всех моих классов как общедоступных, вызывает другие ошибки и похоже на плохую практику. Нужно ли вообще включать модульные тесты в проект Swift, который опирается на многие структуры и классы? Я просто хочу начать с чего-то почти такого же, как код в этой статье .

4b9b3361

Ответ 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.