文档章节

iOS-单元测试

麦兜卖鱼丸
 麦兜卖鱼丸
发布于 2016/11/13 22:55
字数 426
阅读 8
收藏 0

前言

单元测试对于任何的应用或者系统都是必要的,只是我们在开发的时候,大多数都忽略它的重要性与必要性;单元测试可以尽可能的保证项目的质量以及业务流程的完整性,减少bug的产生。

 

本例使用XCTest,xcode自带测试框架;

(一)测试异步(AFNetworking异步请求);

(1)AFNetworking异步请求后台api,返回数据;

#import <Foundation/Foundation.h>

@interface TestService : NSObject

+ (void)testPostWy:(void (^)(id responseObject))sucess failure:(void (^)(id error))failure;

@end


#import "TestService.h"
#import "AFApiDotNet.h"

@implementation TestService

+ (void)testPostWy:(void (^)(id))sucess failure:(void (^)(id))failure {
    
    AFHTTPSessionManager *manager = [AFApiDotNet httpClient];
    
    [manager GET:@"http://c.m.163.com/recommend/getSubDocPic?from=toutiao&prog=LMA1&open=&openpath=&fn=1&passport=&devId=5JQZG5PgwYinhJwpDtJKli2CqJrnjKAhdzTBA6zNHRZPOwRoIXUmsUYPMV3I%2B%2FIj&offset=0&size=10&version=17.2&spever=false&net=wifi&lat=BA%2FHUi%2FT6BcektiKQUOupg%3D%3D&lon=%2B6UXFqODkP%2FBHvMCgZrokw%3D%3D&ts=1479041109&sign=h4oxEfd8zdXy69d0MIhyMVWCwvM7uP3pCXYLEYM3yU548ErR02zJ6%2FKXOnxX046I&encryption=1&canal=appstore" parameters:nil progress:nil success:^(NSURLSessionDataTask * _Nonnull task, id  _Nullable responseObject) {
        
        if (sucess) {
            
            sucess(responseObject);
        }
        
    } failure:^(NSURLSessionDataTask * _Nullable task, NSError * _Nonnull error) {
        
        if (failure) {
            
            failure(error);
        }
    }];
}
@end

 

(2)XCTestCase单元测试,以下testNetworkOpening方法,使用XCTestExpectation类,进行异步代码的测试;

#import <XCTest/XCTest.h>
#import "TestService.h"

@interface TestVCTests : XCTestCase

@end

@implementation TestVCTests

XCTestExpectation *networkSuccessExpectation;

- (void)setUp {
    [super setUp];
    // Put setup code here. This method is called before the invocation of each test method in the class.
}

- (void)tearDown {
    // Put teardown code here. This method is called after the invocation of each test method in the class.
    [super tearDown];
}

- (void)testExample {
    // This is an example of a functional test case.
    // Use XCTAssert and related functions to verify your tests produce the correct results.
}

- (void)testPerformanceExample {
    // This is an example of a performance test case.
    [self measureBlock:^{
        // Put the code you want to measure the time of here.
        
        for (int i = 0; i < 20; i++) {
            
            NSLog(@"test -- %d", i);
        }
        
    }];
}


- (void)testNetworkOpening {
    
    networkSuccessExpectation = [self expectationWithDescription:@"api open"];
    
    [TestService testPostWy:^(id responseObject) {
        
        id result = [NSJSONSerialization JSONObjectWithData:responseObject options:NSJSONReadingAllowFragments error:nil];
        
        if ([result isKindOfClass:[NSDictionary class]]) {
            
            [networkSuccessExpectation fulfill];
        }
        
    } failure:^(id error) {
        
        if ([error isKindOfClass:[NSError class]]) {
            
            [networkSuccessExpectation fulfill];
        }
    }];
    
    [self waitForExpectationsWithTimeout:10.f handler:^(NSError * _Nullable error) {
        
        NSLog(@"time out");
    }];
}
@end

 

待续;

© 著作权归作者所有

共有 人打赏支持
麦兜卖鱼丸
粉丝 12
博文 69
码字总数 69333
作品 0
桂林
iOS工程师
私信 提问
10 个免费的移动 App 测试框架 (Android/iOS)

功能测试框架 #1: KIF for iOS KIF 的全称是 Keep It Functional ,来自 Square。该测试框架只支持 iOS,所有测试使用 Objective-C 编写,简化了 App 开发者使用。 #2: Fliptest – iOS 的应...

oschina
2013/09/20
15.4K
5
那些在学习iOS开发前就应该知道的事(part 2)

英文原文:Things I wish I had known before starting iOS development—Part 2 如果你还没读这篇文章的第一部分,请先读完了再来看第二部分。 那些在学习iOS开发前就应该知道的事(part 1)...

TomatosX
2015/06/12
0
0
2018 iOS 面试题大全(补充完整版)

原文地址:2018 iOS 面试题大全 由于原作者并没有继续更新,这里我转过来继续更新下 这个栏目将持续更新--请iOS的小伙伴关注! 1、iOS 应用导航模式有哪些? 2、iOS 中持久化方式有哪些? 3、...

Theendisthebegi
11/15
0
0
面试官自述:面向高级开发人员的iOS面试问题

当您准备进行技术性iOS面试时,了解您可能会询问哪些主题以及经验丰富的iOS开发人员期望什么是非常重要的。 这是许多硅谷公司用来衡量iOS候选人资历水平的一系列问题。 这些问题涉及iOS开发的...

菇哒微课
04/26
0
0
国内知名互联网电商北京招聘无线方面资深java、ios开发

Java高级开发工程师/Java开发工程师 部门:无线业务 工作地点:北京 薪资:12-25k 岗位职责: 1. 负责需求分析和设计、Java核心代码开发和单元测试,对代码质量和进度负责; 2. 带领并指导...

Ken.yuan
2011/12/14
498
2

没有更多内容

加载失败,请刷新页面

加载更多

windows 下 es安装ik后报错无法启动

1、没有安装分词器时可以正常启动 2、在安装分词器后就报错了 错误信息:Exception in thread "main" java.security.AccessControlException: access denied ("java.io.FilePermission" "D...

zhu_kai1
13分钟前
1
0
ReactNative入门教程-组件生命周期函数

1.组件实例化阶段 defaultProps: 设置组件的初始属性值,比如设置默认Color,width等,可以在通过this.props获取相应的值 constructor(props): 这里通过this.props可以获取defaultProps设置的...

凌宇之蓝
16分钟前
1
0
java使用bytebuddy动态生成带泛型的DTO

我这人文笔很low,喜欢直接贴代码,大家将就着看 //TODO 文字描述,回头有空再补上 package com.valsong.bytebuddy;import com.alibaba.fastjson.JSON;import com.alibaba.fastjson.Type...

ValSong
20分钟前
4
0
智能支付稳定性测试实战

本文根据美团高级测试开发工程师勋伟在美团第43期技术沙龙“美团金融千万级交易系统质量保障之路”的演讲整理而成。主要介绍了美团智能支付业务在稳定性方向遇到的挑战,并重点介绍QA在稳定性...

美团技术团队
22分钟前
1
0
Visual Studio Code 相关插件

Vue 开发工具:Visual Studio Code 相关插件: Chinese Auto Close Tag Auto Rename Tag Vetur ESLint Vue VS Code Extension Pack TortoiseSVN Debugger for Chrome...

华山猛男
24分钟前
2
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部