文档章节

iOS-单元测试

麦兜卖鱼丸
 麦兜卖鱼丸
发布于 2016/11/13 22:55
字数 426
阅读 7
收藏 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工程师
那些在学习iOS开发前就应该知道的事(part 2)

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

TomatosX
2015/06/12
0
0
面试官自述:面向高级开发人员的iOS面试问题

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

菇哒微课
04/26
0
0
spring mvc 单元测试

最近在写单元测试,遇到一些坑和大家分享一下。 之前我们一直有service层的单元测试,但是没有action层的单元测试,正好我们用到spring mvc,所以就用了spring-test做单元测试, spring mvc...

internetafei
2014/12/25
0
0
转:基于IOS上MDM技术相关资料整理及汇总

一、MDM相关知识: MDM (Mobile Device Management ),即移动设备管理。在21世纪的今天,数据是企业宝贵的资产,安全问题更是重中之重,在移动互联网时代,员工个人的设备接入企业网络并查...

移动互联百科
2013/10/06
0
0
如何判断你是合格的高级iOS开发工程师?

前言 随着移动互联网的高速发展泄洪而来,有意学习移动开发的人越来越多了,竞争也是越来越大,需要学习的东西很多。如何才能在激烈的移动开发者竞争中一枝独秀,成为一名真正合格的高级iOS...

_小迷糊
05/26
0
0

没有更多内容

加载失败,请刷新页面

加载更多

python生成HTML报告

# -*- coding=utf-8 -*-# author=zyqimport timeclass Template(object): '''html报告''' HTML_TEMP=''' <!DOCTYPE html> <html lang="en"> <head......

小白兔_球球
20分钟前
1
0
模型融合资料汇总

https://blog.csdn.net/u012526003/article/details/79109418https://blog.csdn.net/willduan1/article/details/73618677https://blog.csdn.net/wstcjf/article/details/77989963?utm_so......

KYO4321
21分钟前
1
0
热更步骤

根据官方文档: http://docs.cocos.com/creator/manual/zh/advanced-topics/hot-update.html version_generator.js文件放到项目根目录下 注意步骤的顺序: 1.构建 2.根据构建目录运行下面命令...

Valiancer
22分钟前
2
0
小程序重写CheckBox样式

CheckBox /* 重写 checkbox 样式 *//* 未选中的 背景样式 */checkbox .wx-checkbox-input{ border-radius: 50%; width: 40rpx; height: 40rpx;}/* 选中后的 背景样式...

originDu
26分钟前
1
0
mysql自动安装脚本

[root@localhost_04 ~]# cat mysql.sh #!/bin/bash# "################检查本机安装mysql的基本条件########################"echo "Checking  user :"d=`id -u`if [ $d ......

芬野de博客
40分钟前
1
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部