Jetez un oeil à la façon dont l' STAssert
macros dans OCUnit (SenTestingKit, fourni avec Xcode) sont mis en œuvre.
Dans votre propre unité de test bundle, vous pouvez mettre en œuvre une catégorie sur NSObject
d'ajouter des méthodes comme un hypothétique -shouldBeValid
qui serait ensuite appeler la même réussite/échec des machines que l' STAssert
macros faire maintenant.
Dans le cas où vous n'êtes pas intimement familier avec le préprocesseur C...
Vous pourriez avoir à utiliser un #define
pour vos macros à passer à travers les valeurs de droite pour __FILE__
et __LINE__
lors de votre BDD tests échouent. Par exemple, vous pourriez avoir à faire quelque chose comme ceci:
@interface NSObject (BehaviorDrivenDevelopment)
- (void)shouldBeValidInFile:(const char *)file line:(int)line;
@end
#define shouldBeValid shouldBeValidInFile:__FILE__ line:__LINE__
De cette façon, vous serait de l'appeler comme ceci:
[[someObject methodUnderTest:argument] shouldBeValid];
Le code que le compilateur voit seront présent:
[[someObject methodUnderTest:argument] shouldBeValidInFile:__FILE__ line:__LINE__];
L' __FILE__
et __LINE__
macros du préprocesseur va s'étendre vers le fichier en cours et dans votre source de test de fichier.
De cette façon, lorsque vous avez un test en échec, il peut transmettre des informations appropriées à l'SenTestingKit à envoyer à Xcode. L'échec s'afficher correctement dans les Résultats de la compilation de la fenêtre, et en cliquant dessus vous amène à l'exact emplacement de l'échec dans vos tests.