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