将OCMock添加到Xcode不会在运行时链接

时间:2014-02-21 00:14:35

标签: xcode xcode5 ocmock xctest

我正在尝试使用XCTest和OCMock运行一个基本的应用程序mac应用程序。但我在运行时遇到链接错误,我有几个简单的XCTests运行得很好,但OCMock测试不起作用(其他测试为简洁而隐藏):

#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. 对于我在Xcode中的HarkTests目标,我在“Link Binary With Libraries”中添加了OCMock - 但是它没有显示在可用框架列表中,我必须手动导航到它。这为我提出了一个红旗,但我不知道为什么Xcode不能识别它。
  3. 编译好。但是在运行时抛出上述错误(因此没有运行测试)。

1 个答案:

答案 0 :(得分:3)

在编译时查找框架的逻辑与在运行时查找框架的逻辑不同。 OCMock使用@rpath机制。我原以为默认情况下/Library/Frameworks在路径上。情况似乎并非如此。您可以尝试设置Runpath Search Paths构建设置以包含已安装OCMock的目录。