iPhone-Einheitentest: Symbole werden beim Aufrufen von benutzerdefiniertem Code nicht gefunden
Ich versuche, Unit-Tests für meine iPhone-Anwendung einzurichten. Ich folgte demApple Unit Testing-Dokumentation durch und das ist gut gelaufen, aber sobald ich eine weitere Klasse zu diesem Test hinzugefügt habe, erhalte ich den folgenden Fehler:
"_OBJC_CLASS_$_RootViewController", referenced from:
__objc_classrefs__DATA@0 in AppDelegateTests.o
ld: symbol(s) not found
collect2: ld returned 1 exit status
Die Anwendung selbst ist eine grundlegende Navigationsanwendung mit Kerndaten für die Datenspeicherung.
Der Komponententest sieht wie folgt aus:
#import <SenTestingKit/SenTestingKit.h>
#import <UIKit/UIKit.h>
#import <CoreData/CoreData.h>
#import "HSStabilityAppAppDelegate.h"
#import "RootViewController.h"
@interface AppDelegateTests : SenTestCase {
HSStabilityAppAppDelegate *appDelegate;
}
@end
@implementation AppDelegateTests
// all code under test must be linked into the Unit Test bundle
#pragma mark -
#pragma mark Set up and tearDown
#if APPLICATION_TESTS
- (void) setUp {
appDelegate = (HSStabilityAppAppDelegate *)[[UIApplication sharedApplication] delegate];
STAssertNotNil(appDelegate, @"Cannot find the application delegate.");
}
- (void) tearDown {
[appDelegate release];
}
#else
#endif
#pragma mark -
#pragma mark Tests
#if APPLICATION_TESTS
- (void) testRootViewIsOnTop {
id topViewControllerClass = [[appDelegate.navigationController topViewController] class];
id rootViewControllerClass = [RootViewController class];
STAssertEquals(topViewControllerClass, rootViewControllerClass, @"Root view controller was not the top class");
}
#endif
@end
Wenn ich die Zeile mit der ID rootViewControllerClass auskommentiere, wird das Programm korrekt verknüpft. Dies tritt auch nur beim Erstellen gegen das Geräteziel auf. Ich habe keine Probleme beim Erstellen gegen den Simulator (wahrscheinlich, da Anwendungstests auf dem Simulator nicht funktionieren).
Kann jemand helfen, dieses grundlegende und sehr ärgerliche Problem zu lösen?