2014-01-15 4 views
3

Я пытаюсь добавить тесты OCUnit к существующему проекту (в XCode 4.6.3). Я следил за инструкциями здесь - http://twobitlabs.com/2011/06/adding-ocunit-to-an-existing-ios-project-with-xcode-4/ однако я получаю 78 ошибок Mach-O только при попытке запуска тестов. Я могу скомпилировать основную цель просто отлично.Ошибка компоновщика Mach-O при добавлении модульных тестов - XCode

Следует отметить, что я еще не модифицировал тесты, они являются стандартным шаблоном. Я не уверен, что я делаю неправильно.

Одно сообщение об ошибке

неопределенные символы для архитектуры i386: "_AudioComponentFindNext", ссылочные от: l651 в libNuanceSpeechAnywhere.a (libSpeechKit.a-i386-master.o) L652 в libNuanceSpeechAnywhere.a (libSpeechKit.a-i386-master.o)

Вот скриншот из кучи ошибок.

enter image description here

+0

Включили ли вы рамки AudioUnit в свою тестовую цель? Возможно, вы указали только его в зависимостях для целевого приложения, но не для целевой цели. – sbaker

ответ

1

Вы должны добавить AudioUnit рамки для вашего проекта, а затем восстановить ее.

Это how you add frameworks к вашему проекту.

+0

Это похоже на работу, но я смущен, почему это необходимо, когда мои тесты никак не связаны с моим приложением. Можете ли вы объяснить, почему это необходимо? – ansible

+0

@ansible Я не совсем уверен, как вы структурируете свои тесты, но я предполагаю, что вы используете эту инфраструктуру где-то в приложении, и тест может издеваться над классом, который использует эту структуру. Просто очень дикая догадка. –

+0

Нет, есть только один тест по умолчанию, который только один тест по умолчанию, который утверждает отказ. – ansible

3

После стучали голову о клавиатуре в течение нескольких часов, я нашел это решение, если вы используете CocoaPods:

В вашей podfile, добавьте свою цель теста, а также с необходимыми зависимостями

workspace 'MyProject' 

target 'MyProject' do 

    use_frameworks! 

    pod 'Alamofire', '~> 4.0' 
    pod 'RealmSwift' 

end 

target 'MyProjectTests' do 
    use_frameworks! 

    pod 'Alamofire', '~> 4.0' 
    pod 'RealmSwift' 

end 

post_install do |installer| 
    installer.pods_project.targets.each do |target| 
    target.build_configurations.each do |config| 
     config.build_settings['SWIFT_VERSION'] = '3.0' 
    end 
    end 
end 

Затем просто запустите pod install, и все должно быть правильно настроено. Я рекомендую запустить pod install --verbose, чтобы вы могли видеть, есть ли какие-либо предупреждения. Если вы вручную отредактировали конфигурацию сборки, Pod будет жаловаться на это. Следуйте рекомендациям, а затем переустановите. Работает как шарм.