2010-07-01 13 views
5

Je fais des tests unitaires sur mon application iPhone en utilisant OCUnit sur XCode 3.2.3 et iOS 4.0. J'ai réussi à configurer mon environnement de test pour passer et échouer correctement les tests de base, mais quand j'importe mes propres fichiers (dans ce cas, "UserAccount.h", il ne compile pas et me dit:Fichiers importés non reconnus dans OCUnit

"_OBJC_CLASS_ $ _UserAccount ", référencé à partir de:

Ensuite, il est écrit" Symbole (s) non trouvé (s) "Cela me semble être une sorte d'erreur de lien, mais je n'ai aucune idée de ce qui se passe. fois, mais en vain. Voici mon code de test:

#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 

Tout conseil serait grandement appr eciated. Merci!

-Matt

Répondre

2

Je suppose que UserAccount.m n'a pas été ajouté à la cible de test. Cela provoquera l'erreur "Symboles non trouvés". J'ai vu des fois avec des cibles multiples dans lesquelles Xcode reconnaît les en-têtes même si le fichier d'implémentation ne fait pas partie de la cible.

Si cela ne fonctionne pas, essayez de vider le cache Xcode avec Xcode>Empty Caches....

+0

Merci! L'ajout de la source à la cible a fait l'affaire. – mag725

3

En XCode 4 au moins vous ne devriez pas inclure vos fichiers .m d'application dans votre test de cible. La bonne façon de faire est:

  1. votre projet (en haut à gauche) -> Objectifs -> Votre test cible -> Dépendances cible -> + Votre principal objectif d'application
  2. Switch construire Onglet Paramètres -> Lier -> Bundle Chargeur -> $ (BUILT_PRODUCTS_DIR) /YourAppName.app/YourAppName

une bonne façon de voir comment cela se fait correctement est de créer un tout nouveau projet XCode 4 avec les tests unitaires et voir comment le test la cible est configurée. Vous remarquerez que les fichiers .m de l'application ne sont pas inclus dans la cible de test.

+0

merci, cela m'a beaucoup aidé –