"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]()