首页 > 移动平台 > 详细

iOS 初步单元测试

时间:2017-01-03 16:54:42      阅读:257      评论:0      收藏:0      [点我收藏+]
- (void)testExample {
    // This is an example of a functional test case.
    // Use XCTAssert and related functions to verify your tests produce the correct results.
    
    NSLog(@"开始爱上单元测试的第一个单元测试测试");
    NSString *test = @"这是我的第一个单元测试";
    XCTAssertTrue([test isEqualToString:@"这是我的第一个单元测试"]);
}

这是一个简单的单元测试 command+u就可以编译成功:test是否等于@"这是我的第一个单元测试",不等于则会断言crach

 

2>.

-(void)testRequset {
    XCTestExpectation *expectation = [self expectationWithDescription:@"没有满足期望"];
    AFHTTPSessionManager *sessionManager = [AFHTTPSessionManager manager];
    sessionManager.responseSerializer = [AFHTTPResponseSerializer serializer];
    [sessionManager POST:@"http://wthrcdn.etouch.cn/weather_mini" parameters:@{@"city":@"北京"} progress:nil success:^(NSURLSessionDataTask * _Nonnull task, id  _Nullable responseObject) {
        
        NSLog(@"%@",responseObject);
        //异步操作后,获取结果,判断异步方法的结果是否正确
        XCTAssertNotNil(responseObject,@"返回出错");
        //如果断言没问题,就调用fulfill宣布测试满足
        [expectation fulfill];
    } failure:^(NSURLSessionDataTask * _Nullable task, NSError * _Nonnull error) {
        NSLog(@"%@",error);
        XCTAssertNil(error,@"请求出错");
       
    }];
    
    //设置5秒的超时时间,如果没有满足测试条件就报错
    [self waitForExpectationsWithTimeout:5.0 handler:^(NSError * _Nullable error) {
        
        if (error) {
            
            NSLog(@"timeout error: %@",error);
        }
    }];
    
}

 这是一个关于网络AFN的异步加载单元测试,我用的是网络上一个天气的接口:因为是异步的,所以设置了5秒的超时时间,如果5秒后没有加载到请求到数据就会报错;

请求到数据不为空则没问题,数据为空会断言crach;

上面用到了  XCTestExpectation ,定义的参数将会在测试log中打印出来方便测试者查看测试结果;

也可以理解为超时错误提示,因为只有在异步操作时间超过了预设时间时才会在log中打印出来;

[ fulfill ]:每一个XCTestExpectation都需要对应一个fulfill,否则将会导致测试失败;

通过waitForExpectationsWithTimeout:handler:做了两件事:

  设置异步测试的时间长度,当超过时间时,报测试错误,并打印预设的超时错误信息>

  超时发生时执行block中的方法>

iOS 初步单元测试

原文:http://www.cnblogs.com/ritian/p/6245128.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!