Я пытаюсь использовать новое @testable
объявление Swift 2, чтобы выставить мои классы цели теста. Однако я получаю эту ошибку компилятора:
Intervals
это модуль, который содержит классы, которые я пытаюсь представить. Как мне избавиться от этой ошибки?
источник
@testable
), но их нужно отправить в App Store? ЕслиEnable Testability
это только для отладочных сборок, как обойти это? Должен ли я вытащить свой тестовый код для выпуска?В моем случае я использовал пользовательскую конфигурацию сборки для тестирования (называемой
Test
), а такжеcocoapods
в качестве менеджера зависимостейМне пришлось добавить следующие строки в конец моего,
Podfile
чтобы включить тестируемостьПо умолчанию
cocoapods
наборыENABLE_TESTABILITY
дляYES
только дляDebug
сборкиисточник
Убедитесь, что вы правильно установили свои флажки в соответствии со схемой приложения. Вы ДОЛЖНЫ ОТКЛЮЧИТЬ свои тестовые цели для Archive Build.
источник
Для тех из вас, кто испытывает это только после запуска Xcode Profiler: переключите конфигурацию построения профиля в управлении вашей схемой на конфигурацию с включенной тестируемостью, и в большинстве случаев это было бы отладкой:
источник
Вероятно, это потому, что ваша основная цель
Enable Testability
установлена наNO
. Вы должны установить егоYES
в схеме отладки (которая используется для запуска ваших тестов).Если вы используете Carthage, эта проблема может быть вызвана импортом фреймворков с помощью
@testable
, потому что они построены по схеме выпуска.В большинстве случаев импортировать фреймворки с этим префиксом плохая практика, поэтому вы можете избежать этого. Если вы не можете, вы должны
Enable Testability
в схеме релизов фреймворков. https://developer.apple.com/library/content/releasenotes/DeveloperTools/RN-Xcode/Chapters/Introduction.html#//apple_ref/doc/uid/TP40001051-CH1-SW326источник
Я начал получать эту ошибку при запуске тестов с использованием Bitrise.
В отличие от других пользователей , говорит, это не на
Target
основе, или наSchema
основе, является наConfiguration
основе. ВыберитеTarget
->Build Settings
вкладка -> искатьtestability
-> включить его в используемой конфигурации .Обратите внимание, что Apple рекомендует включить это в конфигурации, которую вы используете для отладки, а не для AppStore.
источник
Приведенное выше решение подойдет, если вы используете стручки / карфаген. Но если вы используете фреймворки из самой iOS, например «Контакты», вам нужно добавить путь к этим фреймворкам в «Пути поиска в библиотеке» цели вашего основного проекта.
источник
Если вы пытаетесь протестировать фреймворк:
Перейти к цели тестирования -> Фаза сборки -> Фаза создания новых файлов копирования -> Выбрать рамки -> Добавить все рекурсивно используемые платформы
источник
Если случайно у вас есть
Тогда это способ сделать это.
источник
Это не происходило в моих проектах до Xcode 8, но после того, как я обновился до Xcode 8, это меня озадачило.
Ответы, размещенные здесь, не помогли решить мои проблемы. Для меня я просто отбросил эти тесты, так как он не нужен. Поэтому снимите флажки с тестовых кнопок:
И теперь ошибка вышла.
источник