2009-12-29 5 views
3

Les UITextFields ne sont-ils pas destinés à faire partie des LogicTests et font-ils partie de la cible ApplicationTest?iPhone UnitTesting Valeur UITextField et erreur maximale 133

J'ai une classe d'usine qui est responsable de la création et du retour d'un (UIT) UITextField et j'essaie de le tester. Il fait partie de mon objectif de test logique et lorsque je tente de construire et exécuter les tests, je reçois une erreur de construction sur:

/Developer/Tools/RunPlatformUnitTests.include:451:0 Banc d'essai «/Développeur/Plateformes/iPhoneSimulator.platform/Developer/SDKs/iPhoneSimulator3.1.2.sdk/ 'Développeur/usr/bin/otest' quitté anormalement avec le code 133 (il peut-être s'est écrasé).

Dans la fenêtre de construction, cela souligne la ligne suivante dans: "RunPlatformUnitTests.include"

RPUTIFail ${LINENO} "Test rig '${TEST_RIG}' exited abnormally with code ${TEST_RIG_RESULT} (it may have crashed)." 

Mon test unitaire ressemble à ceci:

#import <SenTestingKit/SenTestingKit.h> 
#import <UIKit/UIKit.h> 

// Test-subject headers. 
#import "TextFieldFactory.h" 

@interface TextFieldFactoryTests : SenTestCase {  

} 
@end 

@implementation TextFieldFactoryTests 

#pragma mark Test Setup/teardown 
- (void) setUp { 
    NSLog(@"%@ setUp", self.name);  
} 

- (void) tearDown { 
    NSLog(@"%@ tearDown", self.name); 
} 

#pragma mark Tests 
- (void) testUITextField_NotASecureField 
{ 
    NSLog(@"%@ start", self.name); 
    UITextField *textField = [TextFieldFactory createTextField:YES];  
    NSLog(@"%@ end", self.name); 
} 

La classe que je suis essayer de tester:

// Header file 
#import <Foundation/Foundation.h> 
#import <UIKit/UIKit.h> 

@interface TextFieldFactory : NSObject { 

} 

+(UITextField *)createTextField:(BOOL)isSecureField; 

@end 

// Implementation file 
#import "TextFieldFactory.h" 

@implementation TextFieldFactory 

+(UITextField *)createTextField:(BOOL)isSecureField     
{ 
    // x,y,z,w are constants declared else where 
    UITextField *textField = [[[UITextField alloc] 
      initWithFrame:CGRectMake(x, y, z, w)] 
      autorelease]; 

    // some initialization code 

    return textField; 
} 

@end 
+0

UITextFields sont également à l'origine LogicTests à l'échec pour moi, il semble que votre l'observation est correcte - UITextFields n'est pas destiné à faire partie des LogicTests. –

Répondre

0

Apparemment, vous n'êtes pas censé pour inclure UITextField pour vos tests de logique, mais déplacez-les dans vos tests d'application.

+1

Si cela fonctionnait pour vous, le marqueriez-vous comme la réponse acceptée? – Pops

0

Donc j'ai le même problème aussi ..... des solutions? Ce que je fais pour le résoudre est de créer une classe DummyUITextField et de l'injecter dans mes classes qui ont besoin d'un UITextField. (C'est comme un simulacre, mais la simulation serait une fausse terminologie).

@interface DummyUITextField : UIView { 

NSString *text; 

} 

@property (nonatomic, retain) NSString *text; 

@end 

Vous pouvez ensuite ajouter d'autres méthodes à cette classe.

Cependant, si le code que vous testez crée son propre UITextField (au lieu d'utiliser Interface Builder), alors vous devrez trouver une autre solution.

Merci Dave

1

Ceci est un double de

Why does instantiating a UIFont in an iphone unit test cause a crash?

Voici le backtrace:

#0 0x004899d1 in __HALT() 
#1 0x003d576d in _CFRuntimeCreateInstance() 
#2 0x00c57ef0 in GSFontCreateWithName() 
#3 0x03fccc72 in +[UIFont systemFontOfSize:]() 
#4 0x03f80766 in +[UILabel defaultFont]() 
#5 0x03f82ec4 in -[UILabel _commonInit]() 
#6 0x03f80d3a in -[UILabel initWithFrame:]() 
#7 0x03efbde8 in -[UITextField createTextLabelWithTextColor:]() 
#8 0x03f03e1a in -[UITextField initWithFrame:]() 
#9 0x00c52d75 in +[TextFieldFactory createTextField:] (self=0xc5308c, _cmd=0x8400b50, isSecureField=1 '\001') at /Users/dmaclach/Desktop/test/Classes/untitled2.m:19 
#10 0x00c52c98 in -[TextFieldFactoryTests testUITextField_NotASecureField] (self=0x2161bf0, _cmd=0xc52dfe) at /Users/dmaclach/Desktop/test/Classes/untitled.m:26 
#11 0x0043642d in __invoking___() 
#12 0x00436301 in -[NSInvocation invoke]() 
#13 0x20104632 in -[SenTestCase invokeTest]() 
#14 0x20104d07 in -[SenTestCase performTest:]() 
...