2010-07-01 8 views
5

Ich teste Unit-Tests auf meiner iPhone App mit OCUnit auf XCode 3.2.3 und iOS 4.0. Ich habe meine Testumgebung erfolgreich eingerichtet, um grundlegende Tests ordnungsgemäß zu bestehen und zu bestehen, aber wenn ich meine eigenen Dateien (in diesem Fall "UserAccount.h") importiere, kann es nicht kompiliert werden und sagt:Importierte Dateien, die in OCUnit nicht erkannt werden

"_OBJC_CLASS_ $ _UserAccount ", referenziert von:

Es heißt dann" Symbol (s) nicht gefunden. "Dies scheint mir eine Art Linker Fehler, aber ich habe keine Ahnung, was los ist. Ich habe alle Ziele zahlreich gebaut und gereinigt Mal, aber ohne Erfolg Hier ist mein Testcode:

#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 

Jeder Rat wäre sehr appr beschönigt. Danke!

-Matt

Antwort

2

Ich würde vermuten, dass UserAccount.m nicht auf das Testziel hinzugefügt. Das wird den Fehler "Symbole nicht gefunden" verursachen. Ich habe mal mit mehreren Zielen gesehen, in denen Xcode Header erkennt, obwohl die Implementierungsdatei nicht zum Ziel gehört. Wenn das nicht funktioniert, leeren Sie den Xcode-Cache mit Xcode>Empty Caches....

+0

Vielen Dank! Das Hinzufügen der Quelle zum Ziel hat den Trick gemacht. – mag725

3

In XCode 4 zumindest sollten Sie nicht umfassen Ihre Anwendung .m-Dateien in Ihrem Test Ziel. Der richtige Weg, dies zu tun ist:

  1. Ihr Projekt (oben links) -> Ziele -> Ihr Test Target -> Ziel Abhängigkeiten -> + Ihr Haupt App Ziel
  2. Schaltereinstellungen Tab Build -> Verknüpfung -> Bundle Loader -> $ (BUILT_PRODUCTS_DIR) /YourAppName.app/YourAppName

ein guter Weg, um zu sehen, wie diese korrekt erfolgten ein brandneues XCode 4 Projekt mit Unit-Tests zu erstellen und dann sehen, wie der Test Ziel ist eingerichtet. Sie werden feststellen, dass die .m-Dateien der Anwendung nicht im Testziel enthalten sind.

+0

danke, das hat mir sehr geholfen –

Verwandte Themen