我正在使用XCode 3.2.3和iOS 4.0上的OCUnit对我的iPhone应用进行单元测试。我已成功设置我的测试环境以适当地传递和失败基本测试,但是当我导入我自己的文件时(在这种情况下,“UserAccount.h”,它无法编译并告诉我:
“_ OBJC_CLASS _ $ _ UserAccount”,引自:
然后说“未找到符号”。这让我感到某种链接器错误,但我不知道发生了什么。我已多次建造和清理所有目标,但无济于事。这是我的测试代码:
#import "SomeTestCase.h"
#import "UserAccount.h"
@implementation SomeTestCase
- (void)testUserAccount
{
// UserAccount.m //
UserAccount *testAccount = [[UserAccount alloc] initWithUsername:@"" password:@"" deviceToken:@""];
[testAccount registerNew];
NSLog(@"USERID = %@", testAccount.userID);
STAssertEquals([testAccount login], NO, @"Failure: Login should fail with blank username and password."); // should fail with no username or password
UserAccount *testAccount2 = [[UserAccount alloc] initWithUsername:@"user" password:@"" deviceToken:@""];
STAssertEquals([testAccount2 login], NO, @"Failure: Login should fail with blank password.");// should fail with no password
UserAccount *testAccount3 = [[UserAccount alloc] initWithUsername:@"" password:@"pass" deviceToken:@""];
STAssertEquals([testAccount3 login], NO, @"Failure: Login should fail with blank username.");// should fail with no password
}
@end
任何建议都将不胜感激。 谢谢!
-Matt
答案 0 :(得分:3)
在XCode 4中,至少应该不在测试目标中包含您的应用.m文件。正确的方法是:
了解如何正确完成的一个好方法是使用单元测试创建一个全新的XCode 4项目,然后查看测试目标的设置方式。您会注意到应用程序.m文件未包含在测试目标中。
答案 1 :(得分:2)
我猜想UserAccount.m尚未添加到测试目标中。这将导致“未找到符号”错误。我看到有多个目标的时间,其中Xcode识别标题,即使实现文件不是目标的一部分。
如果这不起作用,请尝试使用Xcode>Empty Caches...
清空Xcode缓存。