Je suis nouveau dans le développement piloté par les tests et j'ai une question fondamentale. Comment accéder aux propriétés privées pour les tests unitaires? Il y a beaucoup de réponses sur la façon dont vous accédez aux méthodes mais je n'ai pas trouvé grand-chose sur les propriétés. Voici ce que j'ai maintenant pour ma classe CDTest. Exclure certains en-têtes importés à des fins de lisibilité.OCUnit sur les propriétés privées
CDTest.h
@interface CDTest : NSObject
@end
CDTest.m
#import "CDTest.h"
#import "CDTest+Protected.h"
@interface CDTest()
@property (strong, nonatomic) NSManagedObjectContext *context;
@end
@implementation CDTest
- (void)setup
{
//Sets up the context
}
@end
cdtest + Protected.h
@interface CDTest()
- (void)setup;
@end
fichier .m test unitaire
#import "CDTest.h"
#import "CDTest+Protected.h"
@implementation CDTestTests
{
CDTest *cdTest;
}
- (void)setUp
{
[super setUp];
cdTest = [CDTest new];
}
- (void)testSetup
{
[cdTest setup];
//Now I need access to the properties in cdTest to validate them
}
@end
Voulant un test pour accéder à une propriété privée est une odeur de code. Essayez de tester entièrement via votre API publique. Si vous dites: «Mais j'ai vraiment besoin de ça», écoutez votre test: une autre classe essaie de s'en sortir. Voir http://qualitycoding.org/testability-vs-hiding/ –