相关疑难解决方法(0)

Foo类在MyApp和MyAppTestCase中实现.将使用两者之一.哪一个未定义

最近我开始单元测试我的应用程序.这个项目(在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 4进行单元测试的链接错误?

macos xcode cocoa objective-c

63
推荐指数
3
解决办法
5万
查看次数

用于单元测试的GH-Unit Objective-C代码,为什么我会收到链接错误?

我正试图深入探讨使用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",引自:

 __objc_classrefs__DATA@0 in ShowTest.o
Run Code Online (Sandbox Code Playgroud)

ld:找不到符号

collect2:ld返回1退出状态

现在我假设这是一个链接错误.我尝试按照此处说明中的每一步操作: -

http://github.com/gabriel/gh-unit/blob/master/README.md

这些说明的第2步让我困惑: -

在Tar​​get'Test'信息窗口中,常规选项卡:

添加链接库,在Mac OS X 10.5 SDK部分下,选择GHUnit.framework

添加链接库,选择您的项目.

添加直接依赖项,然后选择您的项目.(这将导致您的应用程序或框架在测试目标之前构建.)

当我所有接受它的.dylib,.framework和.o文件时,我应该如何将我的项目添加到链接库列表?

xcode linker unit-testing objective-c gh-unit

5
推荐指数
1
解决办法
2400
查看次数

应用程序类的GHUnit链接器错误

我正在尝试运行一个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)

linker-errors gh-unit ios4 xcode4

5
推荐指数
1
解决办法
1609
查看次数