zoukankan      html  css  js  c++  java
  • iOS 初步单元测试

    - (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中的方法>

  • 相关阅读:
    Win10 rocketmq 安装
    Vulnhub DC7
    Vulnhub DC6
    Vulnhub DC5
    Vulnhub DC4
    Vulnhub DC3
    一文带你学会CSRF漏洞
    Shiro反序列化漏洞复现与实战
    DataPipeline CPO 陈雷:实时数据融合之法:便捷可管理
    DataPipeline合伙人 & CPO 陈雷:企业实时数据管理问题与实践 | 附PPT下载
  • 原文地址:https://www.cnblogs.com/ritian/p/6245128.html
Copyright © 2011-2022 走看看