Добавлено единичное тестирование цели на 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

Я столкнулся с той же проблемой. Я сделал следующее, и проблема "Не удалось импортировать заголовок моста" была решена.

шаги:

  1. Выберите ваш проект → Настройки сборки → Поиск " Определения модуля " → Дайте "ДА"
  2. Копировать путь заголовка моста Objective-C
  3. Выберите цель теста → Настройка сборки → Компилятор Swift - Общие → Заголовок моста Objective-C → Путь к заголовку моста мостов.
  4. Убедитесь, что " Пути поиска по заголовкам " тестовых объектов содержат все заголовки в ios Targets. Добавьте их, если какой-либо из заголовков отсутствует.
  5. Построить.

Ссылка: Ссылка на эту ссылку.

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