"为架构x86_64定义未定义的符号",为控制台应用程序设置非常基本的单元测试

ell*_*lmo 12 linker unit-testing objective-c console-application xcode5

我是Objective-C和XCode的新手,在讨论编译语言时,我认为我是精神上的挑战.我不知道链接器如何工作以及每个IDE中的构建设置数量让我感到不舒服只是让我害怕.

我几天前开始学习ObjC,当然我开始使用控制台应用程序项目.到目前为止一切都很好,但我有一个Ruby/Rails背景,这让我想立即了解如何在XCode5中设置最基本的TDD环境.

我使用了这个官方开发文档,但它不够全面.通过试验和错误路径,我只是向项目中添加了一个XCTest目标,然后添加了一个测试用例类,测试我的Fraction类:

#import <XCTest/XCTest.h>
#import "Fraction.h"

@interface FractionTest : XCTestCase
@end

@implementation FractionTest

- (void)setUp
{
    [super setUp];
}

- (void)tearDown
{
    [super tearDown];
}

- (void)testExample
{
    Fraction *fraction = [Fraction new];
}

@end
Run Code Online (Sandbox Code Playgroud)

运行测试时,链接器无法找到引用的符号:

在此输入图像描述

我已经阅读了有关设置Bundle Loaders和Test Host的内容,但没有人真正解释应该设置哪个目标.它们不适合我,我想知道这样一个简单的3档大型"项目"是否需要围绕Build Settings进行调整.

我怎样才能简单地添加一个测试类来测试另一个带有简单断言的类?

ell*_*lmo 19

墨菲定律,当然我在发布一个让我困扰数小时的问题后3分钟找到了答案:

我想测试的类需要是测试目标的成员.检查Fraction类文件的相应"目标成员资格"后,错误消失.

检查Fraction.m的目标成员资格

  • 我发现这个答案对我有帮助,所以我不需要为每个文件设置目标.http://stackoverflow.com/questions/18266649/xctest-build-errors-for-test-target-xcode-5/24390619#24390619 (3认同)