2014-02-21 3 views
1

Я пытаюсь получить базовое приложение для Mac, работающее с XCTest и OCMock. Но я получаю ссылки ошибки во время выполнения, у меня есть несколько простых XCTests, которые работают просто отлично, но тест OCMock не работает (другой тест скрыт для краткости):Добавление OCMock к Xcode не будет связываться во время выполнения

#import <OCMock/OCMock.h> 

- (void)testLoadingInvalidSettingsThrowsAnError 
{ 
    id harkMock = [OCMockObject mockForClass:[Hark class]]; 
    [[[harkMock stub] andReturn:@"bla"] getSettingsAsRawJson]; 
    XCTAssertThrowsSpecificNamed([harkMock loadSettings], NSException, @"InvalidJson"); 
} 

Ошибки получила во время выполнения:

2014-02-21 11:02:47.929 Hark[90819:303] Error loading /Users/chancee/Library/Developer/Xcode/DerivedData/Hark-bsndafsdxydbivhhuuuyelepegkp/Build/Products/Debug/HarkTests.xctest/Contents/MacOS/HarkTests: dlopen(/Users/chancee/Library/Developer/Xcode/DerivedData/Hark-bsndafsdxydbivhhuuuyelepegkp/Build/Products/Debug/HarkTests.xctest/Contents/MacOS/HarkTests, 262): Library not loaded: @rpath/OCMock.framework/Versions/A/OCMock 
    Referenced from: /Users/chancee/Library/Developer/Xcode/DerivedData/Hark-bsndafsdxydbivhhuuuyelepegkp/Build/Products/Debug/HarkTests.xctest/Contents/MacOS/HarkTests 
    Reason: image not found 

Что я сделал:

  1. Загрузите последнюю OCMock.framework и поместили его в /Library/Frameworks
  2. Для my HarkTests target в Xcode Я добавил OCMock в «Link Binary With Libraries» - однако он не отображается в списке доступных фреймворков, я должен вручную перейти к нему. Для меня возникает красный флаг, но я не знаю, почему Xcode его не распознает.
  3. Компилирует в порядке. Но выдает указанную выше ошибку во время выполнения (поэтому никаких тестов не запускается).

ответ

3

Логика поиска фреймворков во время компиляции отличается от логики поиска фреймворка во время выполнения. OCMock использует механизм @rpath. Я бы подумал, что /Library/Frameworks находится по пути по умолчанию. Кажется, это не так. Вы можете попытаться установить параметр сборки Runpath Search Paths, чтобы включить каталог, в который вы установили OCMock.

+0

Спасибо. Вот и все. Мне пришлось добавить '/ Library/Frameworks' к пути поиска Runtime. Но это так странно, что по умолчанию это не так ... –

Смежные вопросы