Objective c 在测试场景中泄漏对象是否被认为是正常的?
我已经编写了一些Objective-C测试用例。典型情况如下所示:Objective c 在测试场景中泄漏对象是否被认为是正常的?,objective-c,testing,memory-management,memory-leaks,Objective C,Testing,Memory Management,Memory Leaks,我已经编写了一些Objective-C测试用例。典型情况如下所示: - (void) test_size_Equals_Excpectation_After_initWithSize { int size = 10; Buffer* buff = [[Buffer alloc] initWithSize:size]; GHAssertEquals([buff size], size, nil); } Buffer alloc返回引用计数为1的Buffer,我不想调用B
- (void) test_size_Equals_Excpectation_After_initWithSize
{
int size = 10;
Buffer* buff = [[Buffer alloc] initWithSize:size];
GHAssertEquals([buff size], size, nil);
}
Buffer alloc返回引用计数为1的Buffer,我不想调用Buffer上的autorelease,所以在函数退出后它会泄漏。这在测试场景中可以接受吗?听起来不是个好主意 您的测试代码应该和应用程序代码一样编写 都是密码
谁说泄漏不会对其他测试产生不利影响,导致一些失败被报告为成功,反之亦然?听起来不是个好主意 您的测试代码应该和应用程序代码一样编写 都是密码
谁说泄漏不会对您的其他测试产生不利影响,导致一些失败被报告为成功,反之亦然?同意。测试代码不会持续运行(这意味着泄漏将在退出时清除)。另一方面,您正在以微妙的方式改变测试运行的上下文。一旦您的测试变得更复杂(可能在实体模型中使用了一些设置代码),事情就会变得棘手。只要像平常一样释放缓冲区,避免坏习惯。大多数测试框架都有安装/拆卸方法,可以帮助管理内存,具体取决于您的环境。同意。测试代码不会持续运行(这意味着泄漏将在退出时清除)。另一方面,您正在以微妙的方式改变测试运行的上下文。一旦您的测试变得更复杂(可能在实体模型中使用了一些设置代码),事情就会变得棘手。只要像平常一样释放缓冲区,避免坏习惯。大多数测试框架都有安装/拆卸方法,可以帮助管理内存,具体取决于您的环境。