Импортированные файлы не распознаются в OCUnit - PullRequest
5 голосов
/ 01 июля 2010

Я выполняю модульное тестирование в своем приложении для iPhone, используя OCUnit на XCode 3.2.3 и iOS 4.0.Я успешно настроил свою среду тестирования для надлежащего прохождения и завершения базовых тестов, но когда я импортирую свои собственные файлы (в данном случае «UserAccount.h»), он не компилируется и сообщает мне:

"_ OBJC_CLASS _ $ _ UserAccount", на который ссылается:

Затем он говорит: "Symbol (s) not found". Это выглядит как ошибка компоновщика, но я понятия не имею, что происходит.Я построил и очистил все цели несколько раз, но безрезультатно. Вот мой код тестирования:

#import "SomeTestCase.h"
#import "UserAccount.h"

@implementation SomeTestCase

 - (void)testUserAccount
 {
 // UserAccount.m //

 UserAccount *testAccount = [[UserAccount alloc] initWithUsername:@"" password:@"" deviceToken:@""];
 [testAccount registerNew];
 NSLog(@"USERID = %@", testAccount.userID);
 STAssertEquals([testAccount login], NO, @"Failure: Login should fail with blank username and password."); // should fail with no username or password

 UserAccount *testAccount2 = [[UserAccount alloc] initWithUsername:@"user" password:@"" deviceToken:@""]; 
 STAssertEquals([testAccount2 login], NO, @"Failure: Login should fail with blank password.");// should fail with no password

 UserAccount *testAccount3 = [[UserAccount alloc] initWithUsername:@"" password:@"pass" deviceToken:@""]; 
 STAssertEquals([testAccount3 login], NO, @"Failure: Login should fail with blank username.");// should fail with no password

 }

@end

Любой совет будет принят с благодарностью. Спасибо!

-Matt

Ответы [ 2 ]

3 голосов
/ 19 июня 2011

В XCode 4, по крайней мере, вы должны , а не включать файлы приложения .m в свою цель test .Правильный способ сделать это:

  1. Ваш проект (вверху слева) -> Цели -> Ваша цель тестирования -> Целевые зависимости -> + Ваша основная цель приложения
  2. Перейти кВкладка «Настройки сборки» -> «Связывание» -> «Bundle Loader» -> $ (BUILT_PRODUCTS_DIR) /YourAppName.app/YourAppName

Хороший способ увидеть, как это правильно сделать, - создать новый проект XCode 4с юнит-тестами, а затем посмотрите, как настроен тестовый объект.Вы заметите, что файлы .m приложения не включены в цель теста.

2 голосов
/ 01 июля 2010

Я полагаю, что UserAccount.m не был добавлен к цели тестирования.Это приведет к ошибке «Символы не найдены».Я видел времена с несколькими целями, в которых XCode распознает заголовки, даже если файл реализации не является частью цели.

Если это не сработает, попробуйте очистить кэш Xcode с помощью Xcode>Empty Caches....

...