Предполагая, что вы могли бы сделать выше, что вы на самом деле будете тестировать? Вот что я думаю:
проверка того, что -релиз уменьшает значение retainCount
проверка того, что когда retainCount достигает нуля, механизм сбора мусора NSObject вызывает -dealloc
проверка того, что при вызове -dealloc освобождается myProperty
Это неправильная гранулярность для модульного теста, пункты один и два - не ваше дело проверять - предположим, что это яблочный тест. Итак, единственное из вышеперечисленного, которое является модульным тестом:
проверка, когда вызывается -dealloc,
myProperty выпущен
Теперь этот кусок кода (совершенно справедливо) не имеет никакой логики и не производит никакого вывода. Итак, я считаю, что модульное тестирование на самом деле параноидально и необычно (похоже на тестирование того, что компилятор действительно работает).
Но если бы я захотел проверить это, я бы сделал это так:
OCMockObject *mockProperty = MOCK(NSObject);
[[mockProperty expect] release];
myObject.myProperty = mockProperty;
[myObject dealloc];
[mockProperty verify];
Очевидно, что вы никогда не должны напрямую вызывать -dealloc, но если вы хотите выполнить модульный тест -dealloc, это именно то, что вы должны делать (или это не модульный тест). Учитывая, что это крайне плохая практика и тест приносит вам очень мало, я не думаю, что вам стоит беспокоиться.