2014-12-23 5 views
2

Есть ли способ проверить, что мой объект будет освобожден после вызова teardown на объект в XCTest. Я имею в виду сделать что-то вроде этого:Как проверить, что объект будет освобожден после teardown

[self.client teardown]; 
__weak typeof(self.client) weakClient = self.client; 
XCTestExpectation *teardownExpectation = ...; 
dipatch_time_t delay = ... 
dispatch_after(delay, dispatch_get_main_queue(), ^{ 
    XCTAssertNil(weakClient); 
    [teardownExpectation fulfill]; 
} 
self.client = nil; 
[self waitForExpectationsWithTimeout:5.0 ...]; 

Но проблема состоит в том, что autorelease бассейн не будет стекать таким образом мой объект никогда не будет на самом деле быть высвобождены.

Есть ли другой способ проверить это?

ответ

1

Вы можете поместить его в свой собственный пул авторефератов, а затем слить его, чтобы имитировать условия того, что произойдет в конце цикла запуска. Очевидно, здесь вы поддерживаете цикл запуска, ожидая ожиданий от вашего теста. Но лучший способ проверить распределения - использовать инструменты и инструмент утечки/распределения.

+0

Да, но объект создается в тестовой настройке, и я действительно не хочу его удалять. Я думаю, это может быть невозможно автоматизировать в тесте. – evanescent