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中的方法>
iOS 初步单元测试的更多相关文章
- 【iOS】单元测试
iOS单元测试(作用及入门提升) 字数1704 阅读16369 评论26 喜欢247 由于只是一些简单实用的东西,学学还是挺不错的.其实单元测试用的好,开发起来也会快很多.单元测试对于我目前来说,就是 ...
- iOS - UnitTests 单元测试
1.UnitTests 在计算机编程中,单元测试(又称为模块测试, Unit Testing)是针对程序模块(软件设计的最小单位)来进行正确性检验的测试工作.程序单元是应用的最小可测试部件.在过程化编 ...
- iOS初步开发
趁公司目前iOS整个没人管理,我折腾一下调试工具,刚好nordic也有参考demo. 然后作为helloworld级别的我... 就直接down下来,结果,还不错, 不像oschina.net和cod ...
- iOS 开发-单元测试
前言 维基百科对单元测试的定义如下: 在计算机编程中,单元测试(英语:Unit Testing)又称为模块测试, 是针对程序模块(软件设计的最小单位)来进行正确性检验的测试工作.程序单元是应用的最小可 ...
- iOS基础 - 单元测试
单元测试(unit testing):对软件中最小可测试单元进行检查和验证.一般面向过程的语言中,基本单元为函数,面向对象的语言中,基本单元通常是类,其实对于一个手机上的app来说基本单元也可以是一个 ...
- iOS进行单元测试OCUnit+xctool
单元测试 什么是单元测试 wiki解释 简单说来就是为你的方法多专门写一个测试函数.以保证你的方法在不停的修改开发中.保持正确.如果出错,第一时间让你知道,这样从最小单位开始监控来保证软件的质量. 我 ...
- iOS开发之单元测试
开始之前 本文侧重讲述如何在iOS程序的开发过程中使用单元测试.使用Xcode自带的OCUnit作为测试框架. 一.单元测试概述 单元测试作为敏捷开发实践的组成之一,其目的是提高软件开发的效率,维持代 ...
- iOS开发的知名大牛博客小汇
王巍的博客:王巍目前在日本横滨任职于LINE.工作内容主要进行Unity3D开发,8小时之外经常进行iOS/Mac开发.他的陈列柜中已有多款应用,其中番茄工作法工具非常棒.http://onevcat ...
- iOS大神牛人的博客集合
王巍的博客:王巍目前在日本横滨任职于LINE.工作内容主要进行Unity3D开发,8小时之外经常进行iOS/Mac开发.他的陈列柜中已有多款应用,其中番茄工作法工具非常棒. http://onevca ...
随机推荐
- 采用Unity快速开发高质量游戏的若干优化建议
http://files.cnblogs.com/123ing/%E9%87%87%E7%94%A8Unity%E5%BF%AB%E9%80%9F%E5%BC%80%E5%8F%91%E9%AB%98 ...
- ubuntu14.04安装dropbox
官网地址: https://www.dropbox.com/install?os=lnx 自己的系统如果没有设置全局翻(qiang)代理,使用deb文件安装后不能直接使用,因为还需要到官网安装prop ...
- 基础知识《五》---Java多线程的常见陷阱
1.在构造函数中启动线程 我在很多代码中都看到这样的问题,在构造函数中启动一个线程,类似这样: public class A{ public A(){ this.x=1; this.y=2; this ...
- VIM中的折叠命令
参考:http://blog.csdn.net/bruce0532/article/details/8497284 za:在折叠与展开间自由转换 zf:创建折叠 示例:zf 3j #本行及以下3 ...
- Android 相机对焦模式
Camera.Parameters.FOCUS_MODE_CONTINUOUS_VIDEO Camera.Parameters.FOCUS_MODE_CONTINUOUS_PICTURE Camer ...
- 在Xcode5和Android Studio添加工程间的依赖
正在编辑中,尚未完成 先看看ios的target是什么,请先参看http://www.cocoachina.com/bbs/read.php?tid-10884.html做个大概了解 这里有一篇文章, ...
- (原创)Python文件与文件系统系列(5)——stat模块
stat模块中定义了许多的常量和函数,可以帮助解释 os.stat().os.fstat().os.lstat()等函数返回的 st_result 类型的对象. 通常使用 os.path.is*() ...
- Java for LeetCode 072 Edit Distance【HARD】
Given two words word1 and word2, find the minimum number of steps required to convert word1 to word2 ...
- ubuntu修改文件访问权限
遇到“bash .....权限不够”的问题时, 从控制台进入到那个文件夹 chmod 777 * -R 全部子目录及文件权限改为 777
- ip数据结构
本文摘自 linux kernel ip.h,感谢开源的GNU struct ip { #if __BYTE_ORDER == __LITTLE_ENDIAN unsigned int ip_hl:4 ...