Хорошо, я потратил около 5 часов, пытаясь понять это. Абсолютно ни одна из прошлых резолюций по темам Stackoverflow не работала для меня, поэтому я надеюсь, что кто-то может дать мне ответ, а не дикую охоту на гусей.
Проблема: У меня есть проект x-кода, который требует модульного тестирования моих пользовательских классов. Я использую X-Code 3.2.5 с iOS SDK 4.2. После нескольких разных способов я не могу выполнить мое модульное тестирование на пользовательских классах. Он отлично работает с примерами Apple.
Пользовательские классы - простые подклассы NSObjects с тривиальными iVars. Мы будем называть класс «Snookie».
Я уже сделал несколько сомнительных резолюций, но хотел бы получить ответ от кого-то, у кого была такая же проблема, с ответом, который имеет смысл.
репликация:
- Добавить MyAppTesting единичной цели испытания расслоения.
- При получении информации о MyAppTesting добавьте MyApp в качестве прямой зависимости.
- Создайте группу под названием «Тесты».
- В разделе «Тесты» добавьте класс TestiveC Test Case.
- В новом тест случае класса .h, импорт Snookie.h и создать Ивар:
#import <SenTestingKit/SenTestingKit.h> #import <UIKit/UIKit.h> #import "Snookie.h" @interface SnookieTests : SenTestCase { Snookie *snookieObject; } @end
В новом тест случае класса .м, Alloc/инициализации Snookie следующим образом:
#import "SnookieTests.h" @implementation SnookieTests - (void) setUp { snookieObject = [[Snookie alloc] init]; } - (void) tearDown { [snookieObject release]; } @end
ошибка:
"_OBJC_CLASS_$_Snookie", referenced from:
Objc-class-ref-to-Snookie in SnookieTests.o
Symbol(s) not found
Collect2: Id returned 1 exit status
В то время, когда я опубликовал это и ваш ответ, я принял другой подход с ТОЧНОЙ той же проблемой. Посмотрите документацию Apple http://developer.apple.com/library/ios/#documentation/Xcode/Conceptual/iphone_development/135-Unit_Testing_Applications/unit_testing_applications.html в разделе «Тестирование приложений». Я выполняю шаги ТОЧНО, импортирую мой заголовок в тест и все равно получаю тот же результат. – Richard 2010-12-03 15:15:13
Нигде в этом примере не говорится о том, как связать классы, которые вы тестируете, с тестовым пакетом. Вам нужно добавить Snookie.m в тестовый комплект. Именно об этом говорит вам ошибка. – JeremyP 2010-12-03 16:36:03