"Undefined символы для архитектуры x86_64" при настройке очень простого модульного тестирования для консольного приложения

Я новичок в Objective-C и XCode и считаю меня мысленно брошенным при обсуждении скомпилированных языков в целом. Я понятия не имею, как работают линкеры, и количество настроек сборки в каждой среде IDE, с которой мне приходилось испытывать дискомфорт, просто пугает меня.

Я начал изучать ObjC несколько дней назад, и, конечно же, начал с проекта Console Application. Все до сих пор хорошо, но у меня есть фон Ruby/Rails, который заставил меня сразу же понять, как настроить даже самую базовую среду TDD в XCode5.

Я использовал этот официальный dev doc, но он был менее тщательным. Взяв пробный путь и путь к ошибкам, я просто добавил цель 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

При выполнении тестов компоновщик не может найти ссылочные символы:

enter image description here

Я читал о настройке Bundle Loaders и Test Host, но никто по-настоящему не объясняет, на какую цель они должны быть установлены. Они не работают для меня, и мне интересно, нужен ли такой простой 3 файлный большой проект даже в настройках сборки.

Как я могу просто добавить тестовый класс, который будет тестировать другой класс с помощью простых утверждений?

Ответ 1

Murphy Law, конечно, я нашел ответ через 3 минуты после публикации вопроса, который прослушивал меня часами:

Класс, который я хочу проверить, должен быть членом тестовой цели. После проверки соответствующего "Target Membership" для файла класса Fraction ошибки исчезли.

checking Target Membership for Fraction.m