我正在尝试使用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
我做了什么:
OCMock.framework
并将其放入/Library/Frameworks
HarkTests
目标,我在“Link Binary With Libraries”中添加了OCMock - 但是它没有显示在可用框架列表中,我必须手动导航到它。这为我提出了一个红旗,但我不知道为什么Xcode不能识别它。答案 0 :(得分:3)
在编译时查找框架的逻辑与在运行时查找框架的逻辑不同。 OCMock使用@rpath
机制。我原以为默认情况下/Library/Frameworks
在路径上。情况似乎并非如此。您可以尝试设置Runpath Search Paths
构建设置以包含已安装OCMock的目录。