Запуск Swift XCTests на iDevice

У меня есть приложение Swift, которое отлично работает как на iPad, так и на симуляторе. В проекте также есть тестовая цель, которая отлично работает на симуляторе, но не работает на iPad или iPhone.

Когда я пытаюсь протестировать на любом iDevice, я получаю сообщения об ошибках компоновщика:

Undefined symbols for architecture armv7:
"__TFC17ExampleApp17ExampleObjectCfMS0_FT_S0_", referenced from:
      __TFC22ExampleAppTests8ExampleTests5setUpfS0_FT_T_ in ExampleTests.o
...

В моем XCTestCase я импортирую свою основную цель:

import ExampleApp

Опять же, это работает для симулятора, но не для реального устройства. Все предназначено для iOS 8, и я использую новейшие бета-версии.


person Ryan    schedule 24.06.2014    source источник
comment
Вы проверили, установлены ли в архитектуре одинаковые значения для основной цели и цели тестирования?   -  person dasdom    schedule 27.11.2018


Ответы (1)


Ошибки с неопределенными символами обычно возникают из-за того, что код не может быть связан во время компиляции — убедитесь, что все ваши соответствующие файлы .swift помечены для включения как в цель ExampleTests, так и в цель ExampleApp.

person gntskn    schedule 27.11.2014
comment
Возможно нет. По умолчанию Swift (и текущий ObjC) использует тесты стиля приложения (установлен флаг TEST_HOST), что означает, что все основные целевые классы и библиотеки будут видны целевому объекту теста. Фактически, импорт в оба может привести к ошибкам пространства имен, из-за чего класс будет казаться «невидимым». . а может быть наоборот? - person Jasper Blues; 27.11.2014
comment
@Jasper Blues - я подозреваю, что проблема не в импорте Swift, а в фактическом связывании объектных файлов - person gntskn; 27.11.2014