0

我正在 iOS 应用程序中进行测试。我在 setUp 方法中有以下代码:

- (void)setUp
{
    [super setUp];
    rest=[[Restaurant alloc]init];
    array=[[NSMutableArray alloc]init];
    array=[rest getTheWebData];

}

我实现了第一个成功的数组测试用例:

- (void)testDataArray_Should_Not_Nil
{
        STAssertNotNil(array,@"array is nil");



}

不久之后,我对实现相同的数组进行了以下测试用例:

-(void)testResult_Should_Be_Valid_Category_For_Given_Node
{

    STAssertNotNil(array,@"array is nil");
}

这个测试用例由于空数组而失败。为什么我在通过第一种情况后在第二种情况下得到空值?

4

1 回答 1

0

您的数组指向由 getTheWebData 方法返回的对象,我认为该方法返回自动释放的数组,因此您的数组很可能在 setUp 方法结束后被释放。您首先执行的 alloc init 毫无意义,并且会泄漏,因为您随后在下一行中再次分配了数组。最好的方法是:

array=[[rest getTheWebData] retain];

我假设你没有使用 ARC

于 2012-06-15T11:07:49.837 回答