Ich versuche derzeit, objective-c mit XCode 3.1 zu lernen. Ich habe an einem kleinen Programm gearbeitet und beschlossen, Unit-Tests hinzuzufügen.Warum schlagen meine OCUnit-Tests mit "Code 138" fehl?
Ich folgte den Schritten auf der Apple Developer-Seite - Automated Unit Testing with Xcode 3 and Objective-C. Als ich meinen ersten Test hinzufügte, funktionierte es gut, als die Tests fehlschlugen, aber als ich die Tests korrigierte, scheiterte der Build. Xcode den folgenden Fehler gemeldet:
error: Test host '/Users/joe/Desktop/OCT/build/Debug/OCT.app/Contents/MacOS/OCT' exited abnormally with code 138 (it may have crashed).
Versuch, meine Fehler zu isolieren, habe ich die Schritte von der Unit-Test Beispiel erneut gefolgt oben und das Beispiel arbeitete. Als ich eine vereinfachte Version meines Codes und einen Testfall hinzugefügt habe, wurde der Fehler zurückgegeben. Hier
ist der Code, den ich erstellt:
Card.h
#import <Cocoa/Cocoa.h>
#import "CardConstants.h"
@interface Card : NSObject {
int rank;
int suit;
BOOL wild ;
}
@property int rank;
@property int suit;
@property BOOL wild;
- (id) initByIndex:(int) i;
@end
Card.m
#import "Card.h"
@implementation Card
@synthesize rank;
@synthesize suit;
@synthesize wild;
- (id) init {
if (self = [super init]) {
rank = JOKER;
suit = JOKER;
wild = false;
}
return [self autorelease];
}
- (id) initByIndex:(int) i {
if (self = [super init]) {
if (i > 51 || i < 0) {
rank = suit = JOKER;
} else {
rank = i % 13;
suit = i/13;
}
wild = false;
}
return [self autorelease];
}
- (void) dealloc {
NSLog(@"Deallocing card");
[super dealloc];
}
@end
CardTestCases.h
CardTestCases.m
#import "CardTestCases.h"
#import "Card.h"
@implementation CardTestCases
- (void) testInitByIndex {
Card *testCard = [[Card alloc] initByIndex:13];
STAssertNotNil(testCard, @"Card not created successfully");
STAssertTrue(testCard.rank == 0,
@"Expected Rank:%d Created Rank:%d", 0, testCard.rank);
[testCard release];
}
@end
FYI habe ich den gleichen Fehler ein BOOL als String in meinem Test-Anmeldung: BOOL b = JA; NSLog (@ "% @", b); Beachten Sie, dass wenn b = NEIN, es nicht abstürzt! – Rob