Testowanie urządzenia iPhone: Symbole nie zostały znalezione podczas wywoływania kodu niestandardowego
Próbuję skonfigurować testy jednostkowe dla mojej aplikacji na iPhone'a. Poszedłem zaDokumentacja testów jednostek Apple przez i to działało dobrze, ale jak tylko dodałem kolejną klasę do tego testu, otrzymałem następujący błąd:
"_OBJC_CLASS_$_RootViewController", referenced from:
__objc_classrefs__DATA@0 in AppDelegateTests.o
ld: symbol(s) not found
collect2: ld returned 1 exit status
Sama aplikacja jest podstawową aplikacją nawigacyjną z danymi podstawowymi do przechowywania danych.
Test jednostkowy jest następujący:
#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
Jeśli komentuję linię id rootViewControllerClass, program łączy się poprawnie. Występuje to tylko wtedy, gdy budujesz przeciwko celowi urządzenia, nie mam żadnych problemów, jeśli buduję przeciwko symulatorowi (prawdopodobnie biorąc pod uwagę, że testy aplikacji nie działają na symulatorze).
Czy każdy może pomóc rozwiązać ten podstawowy i bardzo irytujący problem?