Non eseguire lo strumento da riga di comando in + initialize. Viene inviato dal runtime Objective-C quando viene inviato per la prima volta alla classe qualsiasi messaggio.
Invece, eseguire lo strumento da riga di comando nel metodo +setUp
del test. (Si noti che in realtà volevo +setUp
e non -setUp
;. Un sacco di persone sembrano essere un po 'sfocata sulla differenza tra i metodi di classe e istanza)
In questo caso, unsetUp
metodo di classe viene invocato da OCUnit prima qualsiasi di test in una sottoclasse SenTestCase
gestiscono, e un metodo classetearDown
viene richiamato dal OCUnit dopo tutti prove in una corsa ar SenTestCase
sottoclasse.
Quindi il flusso globale per una particolare SenTestCase
sottoclasse è:
- invia
+setUp
a SomeTestCase
- per ogni
test
metodo partire SomeTestCase
(chiamare test___
)
- creare una nuova istanza di
SomeTestCase
- invia
-setUp
ad esso
- inviare
-test___
ad esso
- inviare
-tearDown
ad esso
- rilascio è
- inviare
+tearDown
a SomeTestCase
In questo modo se si ha qualcosa che deve essere fatto prima di tutti i tuoi -test
metodi eseguiti, o qualcosa che deve essere fatto dopo tutti i tuoi metodi -test
, c'è un punto deterministico a wh che puoi farlo accadere (Piuttosto che basarsi sulla gestione della memoria, che non è deterministica allo stesso modo e potrebbe non essere affatto deterministica se si utilizza GC.)
fonte
2010-09-04 10:45:00
Non avevo trovato nulla che parlasse dei metodi + setUp/+ teardown. Grazie per l'illuminazione. – Mel