Невозможно использовать классы Swift внутри модульного теста Objective-C

Я следовал этому рецепту, чтобы использовать Класс Swift в существующем проекте Objective-C MyProject. Это прекрасно работает.

Однако я все еще не могу использовать один и тот же класс Swift в модульных тестах одного и того же проекта. Компилятор отмечает строку, где мой модульный тест Objective-C говорит #import "MyProjectTests-Swift.h" с file not found.

Если попытаться изменить тестовую цель Product Module Name с MyProjectTests по умолчанию на MyProject, как это предлагается в комментарии к этот (без ответа) вопрос. Однако компилятор теперь помечает строку, где мой модульный тест Objective-C говорит #import "MyProject-Swift.h" с file not found.

Итак, как можно интегрировать классы Swift в модульные тесты (XCTest), написанные на Objective-C? Предоставляет ли Apple какой-либо рецепт?


person Drux    schedule 23.01.2015    source источник
comment
Дубликат stackoverflow.com/questions/24932147/?   -  person Martin R    schedule 23.01.2015


Ответы (3)


Согласно комментарию @SushiGrassJacob (см. здесь) следующее решает проблему:

  1. Убедитесь, что классы Swift нацелены как на MyProject, так и на MyProjectTest.
  2. В модульном тесте #import «MyProjectTests-Swift.h».
person Drux    schedule 23.01.2015
comment
Спасибо! это был, наконец, ответ, который я искал. Это действительно глупо - добавлять файлы Swift в тестовую цель -.- - person Buju; 17.12.2015
comment
Добавление файлов в тестовую цель работает только с простым проектом с минимальным импортом. Если ваш быстрый класс наследуется от класса objc, он потерпит неудачу. - person Jason Moore; 11.06.2019

Шаг 1

Перейдите к своей тестовой цели> Настройки сборки> Пути поиска заголовков и добавьте в нее $CONFIGURATION_TEMP_DIR/YourProject.build/DerivedSources.

Шаг 2

#import "YourProject-Swift.h"

person Harry Zhang    schedule 03.08.2018
comment
Это решило мою проблему. Но, боже мой, как вы узнали об этом? - person Ugo; 22.04.2020

Перейдите к тестовой цели > Настройки сборки > Пути поиска заголовков и добавьте в нее $CONFIGURATION_TEMP_DIR/MyProject.build/DerivedSources. У меня работало только без проверки классов Swift, предназначенных для MyProjectTests. Источник: https://medium.com/if-let-swift-programming/ios-tests-working-with-objective-c-and-swift-class-together-aaf40f91a27c

person nemissm    schedule 15.04.2018