如何在iOS中编写UIViewAnimation的测试用例

时间:2015-08-12 07:14:49

标签: ios objective-c animation tdd testcase

我想为动画块编写测试用例。

-(void)removeFooter {
    [UIView animateWithDuration:0.3 animations:^{
        self.contentOffset = CGPointMake(0, 0);
    } completion:^(BOOL finished) {
        if (!self.loadMoreDelegate) {
            self.tableFooterView = nil;
        }
    }];
}

在测试用例中需要检查tablefooterview,但是 self.tableFooterView = nil; 在完成块中执行一段时间后测试用例在它之前运行。请告诉我如何为此编写测试用例。

2 个答案:

答案 0 :(得分:0)

您可以拨打"测试用例"竞赛方法中的方法

请记住,它通常会在该线程中执行。

但是如果你想在主要的那个中执行它,你可以用这种方式调用方法:

-(void)removeFooter {
    [UIView animateWithDuration:0.3 animations:^{
        self.contentOffset = CGPointMake(0, 0);
    } completion:^(BOOL finished) {
        if (!self.loadMoreDelegate) {
            self.tableFooterView = nil;
        }
    [self performSelectorOnMainThread:@selector(myMethod:) withObject:nil waitUntilDone:YES];
    }];
}

答案 1 :(得分:0)

我得到了解决方案。    在anthor线程中执行任务,并在主线程中休眠直到任务完成。

 NSOperationQueue *queue = [[NSOperationQueue alloc] init];

    [queue addOperationWithBlock:^{
       // task which take time to execute 
        self.tableView.refreshDelegate = self;
        [self.tableView failedToRefreshWithMessage:@"test message"];
    }];
    sleep(2.5); // greater than task completion time
    XCTAssertFalse(self.tableView.isPullToRefresh,@"refresh control not stop.");