Dai un'occhiata a come sono implementate le macro STAssert
in OCUnit (SenTestingKit, incluso con Xcode).
Nel vostro pacco test di unità, è possibile implementare una categoria a NSObject
per aggiungere metodi come un ipotetico -shouldBeValid
che avrebbe poi chiamare lo stesso pass/fail macchinari che le STAssert
macro fanno ora.
Nel caso in cui non siete intimamente familiare con il preprocessore C ...
Probabilmente dovrete anche utilizzare un #define
per le macro di passare attraverso i giusti valori per __FILE__
e __LINE__
quando i test BDD fallire. Ad esempio, si potrebbe fare qualcosa di simile:
@interface NSObject (BehaviorDrivenDevelopment)
- (void)shouldBeValidInFile:(const char *)file line:(int)line;
@end
#define shouldBeValid shouldBeValidInFile:__FILE__ line:__LINE__
In questo modo si potrebbe richiamare in questo modo:
[[someObject methodUnderTest:argument] shouldBeValid];
Il codice del compilatore vede sarà questo:
[[someObject methodUnderTest:argument] shouldBeValidInFile:__FILE__ line:__LINE__];
Le macro del preprocessore __FILE__
e __LINE__
si espandono nel file e nella riga corrente nel file sorgente del test.
In questo modo, quando si verifica un test non riuscito, è possibile passare le informazioni appropriate a SenTestingKit per inviarlo a Xcode. L'errore verrà visualizzato correttamente nella finestra Risultati build e facendo clic su di esso verrà visualizzata la posizione esatta dell'errore nei test.
fonte
2009-08-23 23:17:53
Il progetto sembra essere attivo e sembra quello di cui ho bisogno. Grazie! –
Grazie, è molto bello. –