У меня есть несколько проектов, которые я пытаюсь создать с помощью Xcode 6 Beta 2. Во всех проектах есть библиотеки определенного типа, использующие XCTest (Kiwi / XCTest и Specta), которые не встраиваются в Xcode 6, потому что XCTest / XCTest.h не может быть найденным.
fatal error: 'XCTest/XCTest.h' file not found
#import <XCTest/XCTest.h>
Я заметил, что XCTest.framework больше не находится в списке фазы сборки «Link Libraries with Binaries», но это нормально, потому что когда я создаю новый проект с Xcode 6, кажется, что библиотека подключается автоматически.
Возможно, из-за некоторой актуальности все мои зависимости, требующие XCTest, вводятся через Cocoapods.
Есть ли что-то, о чем я не знаю, что мне нужно обновить в моем проекте?
Я перемещал файлы в проекте. Все, что вам нужно сделать, это выбрать ваши тестовые файлы
xxxTests.m
и т. Д. Иfile inspector
выбратьtarget
как,test
а не как обычную цель.источник
Я заметил, что XCTest доступен только для тестовой цели (в Xcode 6). Если вы используете XCTest для любой другой цели (по какой-либо причине), вы увидите
XCTest.h not found
ошибку.источник
Эта ошибка возникает, когда вы добавляете файл, в котором XCTest используется вне тестовой цели. Чтобы исправить это в AppCode, вы можете щелкнуть правой кнопкой мыши любой подозрительный файл и выбрать «Управление целями», а затем убедиться, что отмечена только тестовая цель.
источник
@squarefrog дает правильный ответ, но вам придется делать это вручную каждый раз, когда вы обновляете свои поды :(
Если вы добавите это в свой подфайл, он автоматически добавит дополнительный путь для вас. Например , если вы хотите добавить
$(PLATFORM_DIR)/Developer/Library/Frameworks
кFRAMEWORK_SEARCH_PATHS
для Specta:post_install do |installer| target = installer.project.targets.find { |t| t.to_s == "Pods-Tests-Specta" } if (target) target.build_configurations.each do |config| s = config.build_settings['FRAMEWORK_SEARCH_PATHS'] s = [ '$(inherited)' ] if s == nil; s.push('$(PLATFORM_DIR)/Developer/Library/Frameworks') config.build_settings['FRAMEWORK_SEARCH_PATHS'] = s end else puts "WARNING: Pods-Tests-Specta target not found" end end
источник
"Pods-Tests-Specta"
настройки в соответствии с настройками вашего проекта или просто использовать цикл, который @squarefrog предложил для перебора каждой цели.installer.project.targets.each do |target
для перебора всех целей и применения изменения.Я столкнулся с той же проблемой через некоторое время, когда импортировал фреймворк XCTest из этапов сборки и решил проблему.
Этапы сборки-> XCTest.Framework> очистить и запустить. Надеюсь, это будет кому-то полезно ..
для справки ... Импортируйте XCTest в существующий проект
источник
На момент написания в последней версии Cocoapods (0.33.1) не было исправления проблемы.
Но ультрасовременная версия подходит.
Следуйте этому руководству, чтобы установить последнюю версию Cocoapods из исходного кода. Я называю свой
pod-dev
(описанный в руководстве), чтобы отличить его от версии модулей с установленным гемом.Преимущество этого подхода заключается в том, что вам не нужны дополнительные сценарии в вашем Podfile. Вам просто нужно не забыть сделать
pod-dev install
вместо обычногоpod install
.источник
Лучший способ получить XCTest - это добавить его из Test Navigator (5-й значок на левой панели).
Действуя таким образом, новый
xx.m
тестовый файл нацелен не на (в правой панели) приложение (на левой панели> Target, Wrapper Extension: app), а на пакет (Wrapper Extension: xctest)'XCTest/XCTest.h' file not found
, потому что ваш файл должен быть нацелен на приложение.источник
Это самый простой способ, который я нашел. Никаких изменений проекта не требуется. И это изменение будет сохраняться до следующего обновления Xcode:
cd /Applications/Xcode6-Beta7.app/Contents/Developer/Platforms/iPhoneSimulator.platform/Developer/SDKs/iPhoneSimulator8.0.sdk/Developer/Library/Frameworks ln -s ../../../../../Library/Frameworks/XCTest.framework
источник
В проекте без Cocoapods (так что не отвечая напрямую на вопрос OP, но, возможно, полезно для меня или других в будущем), у нас была такая же проблема. Это было решено заменой наших предыдущих пунктов OCTest на XCTest. Например, файл MyApp.xcodeproj / project.pbxproj имеет это различие (сокращенно);
- path = MyAppUnitTests.octest; sourceTree = BUILT_PRODUCTS_DIR; }; + path = MyAppUnitTests.xctest; sourceTree = BUILT_PRODUCTS_DIR; };
источник