2014-10-08 46 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