如何测试一个对象将在拆卸后被释放
Posted
技术标签:
【中文标题】如何测试一个对象将在拆卸后被释放【英文标题】:How to test that an object will be deallocated after teardown 【发布时间】:2014-12-23 03:04:19 【问题描述】:有没有办法测试我的对象在 XCTest.我正在考虑做这样的事情:
[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 ...];
但是这样做的问题是自动释放池不会耗尽,所以我的对象实际上永远不会被释放。
还有其他方法可以测试吗?
【问题讨论】:
【参考方案1】:您可以将其放入您自己的自动释放池中,然后将其排空,以模拟运行循环结束时会发生的情况。显然,在这里您通过等待测试的期望来保持运行循环。但测试分配的更好方法是使用 Instruments 和泄漏/分配工具。
【讨论】:
是的,但是该对象是在测试设置中创建的,我真的不想从那里删除它。我想这可能无法在测试中自动化。以上是关于如何测试一个对象将在拆卸后被释放的主要内容,如果未能解决你的问题,请参考以下文章