2014-10-08 48 views
2

在Objective-C的Xcode 6中: 當我創建一個Cocoa Touch框架時,項目已經有了一個單元測試目標。單元測試的可可觸摸框架

假設我有我的框架下面的類和單元測試情況:

//Framework 
@interface MyClass : NSObject 
- (NSString*)greetings; 
@end 

@implementation MyClass 

- (NSString*)greetings { 
    return @"Hello"; 
} 
@end 

// Test class 
#import <UIKit/UIKit.h> 
#import <XCTest/XCTest.h> 
#import "MyClass.h" 
@interface MyClassTests : XCTestCase 
@end 

@implementation MyClassTests 
- (void)testGreetings { 
    MyClass *myClass = [[MyClass alloc] init]; 
    XCTAssertTrue([[myClass greetings] isEqualToString:@"Hello"]); 
} 
@end 

當我嘗試運行測試,我得到:用於建築x86_64的

未定義的符號: 「_OBJC_CLASS_ $ _MyClass「,引用自: objc-class-ref MyClassTests.o

爲什麼t他的測試目標沒有找到我的課程?我無法弄清楚什麼是錯的。我假設Xcode模板會正確設置所有內容。

+0

我沒有看到你的類的任何接口的聲明稱爲MyClass的,如果你在其他地方定義你的界面,只需導入頭 – deathhorse 2014-10-08 17:46:46

+0

@deathhorse我添加缺少的行。只有導入不能解決問題。 Cocoa Touch框架的單元測試似乎與普通應用程序不同。 – Sebastian 2014-10-08 19:14:53

+0

嗯..可能你正在構建像「armv7」,armv7s等「設備」體系結構的框架,但不適用於模擬器。嘗試在設備上運行相同的測試 – deathhorse 2014-10-08 19:27:12

回答

0

您將此x86_64體系結構添加到生成設置 - >有效體系結構x86_64中並嘗試使用。它可以是工作。

參考架構:

armv7: Used in the oldest iOS 7-supporting devices 
armv7s: As used in iPhone 5 and 5C 
arm64: For the 64-bit ARM processor in iPhone 5S 
i386: For the 32-bit simulator 
x86_64: Used in 64-bit simulator