我创建了一个视图控制器viewsampleViewController ..它有两个方法setname和getname ..我为该视图控制器创建一个测试用例。我的testcase名称是newTestCase,方法名称是testName。
#import "newTestCase.h"
#import "viewsampleViewController.h"
@implementation newTestCase
在我的testName方法中,
-(void)testName{
NSString *b=@"hello";
v =[[viewsampleViewController alloc] init];
STAssertNotNil(v,@"v doesnt created");
[v setuname:@"hello"];
NSString *a=[v getuname];
STAssertEquals(b,a,@"error:name not equal");
[v release];
}
-(void)setUp{
v=[viewsampleViewController alloc];
}
-(void) tearDown{
[v release];
}
当我构建时出现错误
Ld "build/Debug-iphoneos/Unit test.octest/Unit test" normal armv6
cd /Users/anande/Documents/viewsample
setenv IPHONEOS_DEPLOYMENT_TARGET 3.1.3
setenv PATH "/Developer/Platforms/iPhoneOS.platform/Developer/usr/bin:/Developer/usr/bin:/usr/bin:/bin:/usr/sbin:/sbin"
/Developer/Platforms/iPhoneOS.platform/Developer/usr/bin/gcc-4.2 -arch armv6 -bundle -isysroot /Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS3.1.3.sdk -L/Users/anande/Documents/viewsample/build/Debug-iphoneos -F/Users/anande/Documents/viewsample/build/Debug-iphoneos -F/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS3.1.3.sdk/Developer/Library/Frameworks -filelist "/Users/anande/Documents/viewsample/build/viewsample.build/Debug-iphoneos/Unit test.build/Objects-normal/armv6/Unit test.LinkFileList" -dead_strip -framework Foundation -framework SenTestingKit -miphoneos-version-min=3.1.3 -o "/Users/anande/Documents/viewsample/build/Debug-iphoneos/Unit test.octest/Unit test"
Undefined symbols:
"_OBJC_CLASS_$_viewsampleViewController", referenced from:
__objc_classrefs__DATA@0 in newTestCase.o
ld: symbol(s) not found
collect2: ld returned 1 exit status
请帮助我,
答案 0 :(得分:19)
由于架构和依赖而出现链接器问题</ strong>。实际上,当我们从其他来源向我们的项目添加一些文件时,可能会出现这种情况没有建立确切的依赖。所以编译器生成链接器错误。我通过以下步骤解决了这个问题:
答案 1 :(得分:14)
这是一个链接器错误,将viewsampleViewController.m添加到您的测试目标。 请将您的类名称大写,使所有内容更具可读性
答案 2 :(得分:2)
以某种方式没有编译viewsampleViewController.m文件。确保它是项目的一部分。
答案 3 :(得分:0)
我遇到了同样的问题,在我对项目的来源做了一些改变。 所有的.m都改为.mm,由于某种原因,在'Link Binary With Libraries'中,没有添加有问题的特定类,但是在'Copy Bundle Resources'中。在我改变之后它起作用了。
所以这就是我所做的:
1)单击Xcode左上角的蓝色项目选项卡。 2)转到“TARGETS”选项。 3)转到“构建阶段”选项卡。 4)转到“复制捆绑资源”。 5)查找实现文件(.m,.mm),如果有,则单击减号( - )选项将其删除。 6)转到“编译源”并单击加号(+)选项并添加该实现文件。 7)编译并点击它,兄弟,你很高兴。
希望这会有所帮助。 欢呼声。
答案 4 :(得分:0)
将应用程序的.m文件直接添加到测试目标时可以解决问题,但这是多余的,不必要的。关注the steps outlined here by Two Bit Labs以使其正常运行。总结一下,确保你的......
Bundle Loader
构建设置指向您应用的捆绑包。Test Host
构建设置指向您应用的捆绑包。Symbols Hidden by Default
构建设置为NO
。