最近我开始单元测试我的应用程序.这个项目(在Xcode4中)是在没有单元测试包的情况下创建的,所以我不得不进行设置.我已经按照这里的步骤进行了操作:http://cocoawithlove.com/2009/12/sample-mac-application-with-complete.html 并且它适用于简单的类,但现在我正在尝试测试依赖的类在另一个和另一个,等等
首先我收到了一个链接器错误,所以我将*.m
文件添加到测试用例目标但现在我收到了一个警告,我正在尝试测试的每个类:
Foo类在MyApp和MyAppTestCase中实现.将使用两者之一.哪一个未定义.
我想知道为什么会这样?我怎么解决这个问题?也许我在设置单元测试目标时错过了什么?
正确设置"Bundle Loader" $(BUILT_PRODUCTS_DIR)/AppName.app/AppName
将"默认隐藏的符号" 设置为NO(在目标应用程序的" 构建设置"中).这是链接器错误的来源,因为它默认为YES!我一直在努力奋斗这么久!
我正试图深入探讨使用Xcode进行单元测试的相当坦率的可怕世界(这似乎是一个错综复杂的过程.)
基本上我有这个测试类,试图测试我的Show.h类
#import <GHUnit/GHUnit.h>
#import "Show.h"
@interface ShowTest : GHTestCase { }
@end
@implementation ShowTest
- (void)testShowCreate
{
Show *s = [[Show alloc] init];
GHAssertNotNil(s,@"Was nil.");
}
@end
Run Code Online (Sandbox Code Playgroud)
但是,当我尝试构建并运行我的测试时,它会因此错误而呻吟: -
未定义的符号:
"_OBJC_CLASS _ $ _ Show",引自:
Run Code Online (Sandbox Code Playgroud)__objc_classrefs__DATA@0 in ShowTest.o
ld:找不到符号
collect2:ld返回1退出状态
现在我假设这是一个链接错误.我尝试按照此处说明中的每一步操作: -
http://github.com/gabriel/gh-unit/blob/master/README.md
这些说明的第2步让我困惑: -
在Target'Test'信息窗口中,常规选项卡:
添加链接库,在Mac OS X 10.5 SDK部分下,选择GHUnit.framework
添加链接库,选择您的项目.
添加直接依赖项,然后选择您的项目.(这将导致您的应用程序或框架在测试目标之前构建.)
当我所有接受它的.dylib,.framework和.o文件时,我应该如何将我的项目添加到链接库列表?
我正在尝试运行一个GHUnit测试来测试一个setter实际上适用于我的应用程序中的NSManagedObject对象.我的应用程序名为Machine,我的GHUnit目标称为测试.我已将Machine添加为Tests目标的依赖项.我在测试中的对象叫做Goal.这是代码,链接中的错误如下所示.
#import <GHUnitIOS/GHUnit.h>
#import <CoreData/CoreData.h>
#import "Goal.h"
#import "GoalRec.h"
@interface ControllerTests : GHTestCase { }
@property (retain) Goal *goal;
@end
@implementation ControllerTests
@synthesize goal;
- (BOOL)shouldRunOnMainThread {
// By default NO, but if you have a UI test or test dependent on running on the main thread return YES
return NO;
}
- (void)setUpClass {
// Run at start of all tests in the class
}
- (void)tearDownClass {
// Run at end of all tests in the class
} …
Run Code Online (Sandbox Code Playgroud) gh-unit ×2
objective-c ×2
xcode ×2
cocoa ×1
ios4 ×1
linker ×1
macos ×1
unit-testing ×1
xcode4 ×1