Добавлено единичное тестирование цели на xcode - не удалось импортировать заголовок моста не исчезнет
Я добавил новую тестовую цель в свой проект XCode. Мой проект имеет код Swift и код Objective-C и имеет заголовок для моста. После добавления заголовка моста к настройкам сборки UnitTesting или выполнения import MyTarget
, я получаю сообщение об ошибке:
failed to import bridging header
Я пробовал:
- Добавление заголовка моста в проект, модульное тестирование и основные настройки целевой сборки.
- Изменение
defines modules
на Yes
.
- Перемещение файла заголовка моста в корневую папку.
Я также попытался создать образец проекта, который был построен и работал отлично. Взять все, что у меня есть, в чистый новый проект, на данный момент это не вариант.
Ответы
Ответ 1
Если вы используете Pod в качестве менеджера пакетов, необходимо задать путь поиска и т.д. Дайте простой способ,
попробуйте добавить это в подфайл
target 'YourProductTests' do
inherit! :search_paths
# Pods for testing
end
и pod install
Это работает для меня.
Если вышеуказанное решение не для вас. Попробуйте вручную установить
-
Выберите целевую аудиторию → вкладка "Настройка" → "Все" и "Комбинированные" → "Компилятор Swift" - "Генерация кода" → "Объект с мостиком C": добавьте заголовок xxx-моста
-
Проверьте "Путь поиска", установите значение Framework Search Path
, Header Search Paths
, Library Search Path
в соответствии с вашей основной целью. Возможно, какой-то путь поиска проиграет здесь, снова добавьте его вручную.
Ответ 2
На этом этапе мне никогда не приходилось import MyTarget
получать модульные тесты для работы в Swift.
Общие решения
- Я предполагаю, что вы это пробовали, но было неясно, добавили ли вы заголовок вашего моста к целевой точке приложения и тестовой цели одновременно?
- Другим вариантом, который может быть не идеален, является добавление заголовка моста в тестовую цель, так что у вас на самом деле есть два мостовых заголовка. Они должны выглядеть одинаково и будут хорошим испытанием.
- Если вы используете
$(SRCROOT)
для ссылки на ваш путь к заголовку моста, убедитесь, что он оценивается для исправления пути.
- Если все остальное не работает, вы должны выполнить diff diff вашего
.xcodeproj
с одним из ваших рабочих проектов и сопоставить любые соответствующие значения, которые могут быть разными.
Комбинированная система заголовков не идеальна, но вот несколько проблем, с которыми я столкнулся.
Ответ 3
Я столкнулся с той же проблемой. Я сделал следующее, и проблема "Не удалось импортировать заголовок моста" была решена.
шаги:
- Выберите ваш проект → Настройки сборки → Поиск " Определения модуля " → Дайте "ДА"
- Копировать путь заголовка моста Objective-C
- Выберите цель теста → Настройка сборки → Компилятор Swift - Общие → Заголовок моста Objective-C → Путь к заголовку моста мостов.
- Убедитесь, что " Пути поиска по заголовкам " тестовых объектов содержат все заголовки в ios Targets. Добавьте их, если какой-либо из заголовков отсутствует.
- Построить.
Ссылка: Ссылка на эту ссылку.
Ответ 4
Решение @Victor Choy работает для меня, но мне пришлось переместить цель теста в цель продукта следующим образом:
target 'YourProduct' do
# Pods for product
target 'YourProductTests' do
inherit! :search_paths
# Pods for product testing
end
end
Это не сработало для меня:
target 'YourProduct' do
# Pods for product
end
target 'YourProductTests' do
inherit! :search_paths
# Pods for product testing
end