Ответ 1
Не запускайте инструмент командной строки в + initialize. Это отправлено во время выполнения Objective-C, когда класс сначала отправил любое сообщение.
Вместо этого запустите инструмент командной строки в тестовом методе +setUp
. (Обратите внимание, что я действительно имел в виду +setUp
, а не -setUp
; многие люди кажутся немного нечеткими в разнице между методами класса и экземпляра.)
В этом случае OCUnit вызывается метод class setUp
до любых тестов в подклассе SenTestCase
и класс tearDown
метод вызывается OCUnit после тестов all в прогоне подкласса SenTestCase
.
Таким образом, общий поток для конкретного подкласса SenTestCase
:
- отправить
+setUp
вSomeTestCase
- для каждого метода
test
, начинающегося сSomeTestCase
(назовите егоtest___
)- создать новый экземпляр
SomeTestCase
- отправить
-setUp
к нему - отправить
-test___
к нему - отправить
-tearDown
к нему - отпустите его
- создать новый экземпляр
- отправить
+tearDown
вSomeTestCase
Таким образом, если у вас есть что-то, что нужно сделать до запуска любого из ваших методов -test
или что-то, что нужно сделать после всех ваших методов -test
, существует детерминированная точка, в которой вы можете сделать это происходит. (Вместо того, чтобы полагаться на управление памятью, что не является детерминированным таким же образом и может быть не детерминированным вообще, если вы используете GC.)