这时会发现AFNetworking根本没法在单元测试里使用,因为没有找到库,所以我们需要配置一下:

  在Info.plist中添加NSAppTransportSecurity类型Dictionary。 在NSAppTransportSecurity下添加NSAllowsArbitraryLoads类型Boolean,值设为YES。设置位置如下:

  iOS9的http安全问题:现在进行异步请求的网络测试,由于测试方法主线程执行完会结束,所以需要设置一下,否则没法查看异步返回结果。在方法结束前设置等待,调回回来的时候再让它继续执行。(另一种异步函数的单元测试)定义宏如下:
  //waitForExpectationsWithTimeout是等待时间,超过了不再等待往下执行。
  #define WAIT do {\
  [self expectationForNotification:@"RSBaseTest" object:nil handler:nil];\
  [self waitForExpectationsWithTimeout:30 handler:nil];\
  } while (0)
  #define NOTIFY \
  [[NSNotificationCenter defaultCenter]postNotificationName:@"RSBaseTest" object:nil]
  增加测试方法testRequest:
  -(void)testRequest{
  // 1.获得请求管理者
  AFHTTPRequestOperationManager *mgr = [AFHTTPRequestOperationManager manager];
  mgr.responseSerializer.acceptableContentTypes = [NSSet setWithObjects:@"text/html",nil];
  // 2.发送GET请求
  [mgr GET:@"http://www.weather.com.cn/adat/sk/101110101.html" parameters:nil success:^(AFHTTPRequestOperation *operation, id responseObject) {
  NSLog(@"responseObject:%@",responseObject);
  XCTAssertNotNil(responseObject, @"返回出错");
  NOTIFY //继续执行
  } failure:^(AFHTTPRequestOperation *operation, NSError *error) {
  NSLog(@"error:%@",error);
  XCTAssertNil(error, @"请求出错");
  NOTIFY //继续执行
  }];
  WAIT  //暂停
  }
  有时候我们想测试一下整个流程是否可以跑通,比如获取验证码、登录、上传头像,查询个人资料。其实只要输入验证码可以完成整个测试。这时候需要用到输入框了,以便程序继续执行。使用了一个第三方的弹出输入框STAlertView,前面已经设置。
  STAlertView的使用方法:
  self.stAlertView = [[STAlertView alloc]initWithTitle:@"验证码" message:nil textFieldHint:@"请输入手机验证码" textFieldValue:nil cancelButtonTitle:@"取消" otherButtonTitle:@"确定" cancelButtonBlock:^{
  //点击取消返回后执行
  [self testAlertViewCancel];
  NOTIFY //继续执行
  } otherButtonBlock:^(NSString *b) {
  //点击确定后执行
  [self alertViewComfirm:b];
  NOTIFY //继续执行
  }];
  [self.stAlertView show];
  · 高级自动化单元测试,推荐看LeanCloud 工程师的李智维的自动化单元测试的直播录影
  · 李智维的演示github
  其实讲得非常不错,自动化单元测试,自动化发布都有讲到,不过由于自己的功力不够,只能留着以后慢慢学习。