2014-11-16 1 views
2

Как добавить xctest framework в старый проект? Когда я пытаюсь добавить новую структуру, я не смог найти xctest в доступном списке в Link Binaries With Libraries.Добавить xctest framework в старый проект

Я также попытался Edit-> refractor-> convertToXCTEst но выберите цели для использования xctest: списки не целевые

ответ

6

В Xcode 6.1.1, а также в Xcode 6.0.1, то XCTest.framework нет в списке больше в качестве доступной структуры. Однако в Xcode 5.1.1 перечислены рамки.

Итак, что-то изменилось между Xcode 5 и 6, когда дело доходит до тестирования. Например, при создании нового проекта в Xcode 6 вам больше не нужна инфраструктура XCTest. Вы можете просто добавить новый тестовый пример, выполнить сборку и выполнить тесты просто отлично. Мне еще предстоит выяснить, почему это так, но для вас это может быть первым делом: просто скопируйте тестовый пример и посмотрите, работают ли все.

Если это не так, вы можете попробовать это уродливое обходное решение: откройте проект со старой версией Xcode, добавьте туда фреймворк и вернитесь к работе в новой версии Xcode. Это сработало для меня, когда я попробовал его с Xcode 5.1.1.


EDIT: Причина, почему XCTest.framework больше не нужны в проектах, созданных Xcode 6, потому что эти проекты имеют настройку CLANG_ENABLE_MODULES набор для YES сборки. Xcode 6 предоставляет это в пользовательском интерфейсе под названием «Включить модули (C и Objective-C)». Если этот параметр включен, любые операторы #import для системных фреймворков, таких как XCTest, вызывают clang, чтобы автоматически ссылаться на эту структуру. Подробная информация доступна в "Modules" section of the clang documentation. После того, как этот параметр сборки включен, вы также можете удалить любые другие системные фреймворки из фазы сборки «Связывание с библиотеками» ваших целей.

И для полноты: Причина Xcode 6 больше не перечисляет XCTest.framework как доступные рамки, потому что расположение фреймворки внутри Xcode пучка изменилось:

# Xcode 6 
/Applications/Xcode-6.1.1.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/Library/Frameworks/XCTest.framework 
# Xcode 5 
/Applications/Xcode-5.1.1.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS7.1.sdk/Developer/Library/Frameworks/XCTest.framework 

Очевидно, Apple в настоящее время полностью зависит от CLANG_ENABLE_MODULES, чтобы получить целевые объекты для сравнения с XCTest.framework. Если вы хотите Xcode 6 в список XCTest.framework как доступные рамки, вы можете вручную создать символическую ссылку внутри приложения пачки Xcode:

cd /Applications/Xcode-6.1.1.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks 
sudo ln -s /Applications/Xcode-6.1.1.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/Library/Frameworks/XCTest.framework . 

Вам необходимо перезапустить Xcode после создания ссылки.