iOS开发之单元测试/Unit Tests
来源:互联网 发布:淘宝毕业论文降重 编辑:程序博客网 时间:2024/04/25 08:24
单元测试试通过代码监测代码的开发手段,一般用于敏捷开发和驱动测试开发(驱动测试开发是红灯<有错> / 绿灯<无措>式的迭代开发),单元测试主要针对业务逻辑代码进行测试,不适合做UI的测试.MVVM模式设计的代码,把几乎所有的重要业务逻辑封装在了视图模型里面,这时候单元测试也能很方便的进行检测.
我们在创建一个项目的时候,会看到如下界面:
include Unit Tests默认是勾选的,字面可以看出他就是单元测试,作用是可以帮助我们在不运行整个项目的情况下,测试某个方法是否正确.
当然如果你取消了勾选也没关系,可以通过:File–>New–>Target来先创建一个Target(单元测试是一个独立的Target,不参与打包上传),
然后选择Test–>iOS Unit Testing Bundle,
这时候已经为项目添加了一个新的Target,作为测试单元.”工程名Tests”的分组,这个分组里就是XCTestCase的子类,XCTest中的测试类都是继承自XCTestCase。创建的单元测试和默认自带的单元测试文件一样,都会有以下四个函数:
- (void)setUp { [super setUp]; //在类中的每个测试方法调用之前调用。}- (void)tearDown { // 在类中的每个测试方法的调用后调用 [super tearDown];}- (void)testExample { //功能测试用例的例子。}- (void)testPerformanceExample { // 性能测试用例的一个例子。 [self measureBlock:^{ }];}
进行单元测试:
新建一个空项目,创建一个CalculateManager的类,在.h里写一个方法,暂且不去实现
//// CalculateManager.h// Unit Test//// Created by ShaoFeng on 16/6/24.// Copyright © 2016年 Cocav. All rights reserved.//#import <Foundation/Foundation.h>@interface CalculateManager : NSObject+ (NSInteger)addNumA:(NSInteger )numA numB:(NSInteger )numB;@end
然后我们在单元测试中,写一个功能测试的函数
注意
1.测试函数的要求是:1.必须是实例方法;2.必须无返回值;3.以test开头;
2.测试函数执行的顺序:以函数名中test后面的字符大小有关,比如-(void)test001XXX会先于-(void)test002XXX执行;
3.运行单元测试的快捷键:CMD + U,或者点击函数旁边的菱形
- (void)testCalaulate{ XCTAssertEqual(20, [CalculateManager addNumA:10 numB:10]);}
这时候会报错:因为我们没有去实现方法,无法通过测试
到CalculateManager.m里将方法实现后,再次测试,成功通过
+ (NSInteger)addNumA:(NSInteger)numA numB:(NSInteger)numB{ return numA + numB;}
常用各种断言测试
XCTAssertNil(a1, format...)为空判断,a1为空时通过,反之不通过;XCTAssertNotNil(a1, format…)不为空判断,a1不为空时通过,反之不通过;XCTAssert(expression, format...)当expression求值为TRUE时通过;XCTAssertTrue(expression, format...)当expression求值为TRUE时通过;XCTAssertFalse(expression, format...)当expression求值为False时通过;XCTAssertEqualObjects(a1, a2, format...)判断相等,[a1 isEqual:a2]值为TRUE时通过,其中一个不为空时,不通过;XCTAssertNotEqualObjects(a1, a2, format...)判断不等,[a1 isEqual:a2]值为False时通过,XCTAssertEqual(a1, a2, format...)判断相等(当a1和a2是 C语言标量、结构体或联合体时使用,NSString也可以);XCTAssertNotEqual(a1, a2, format...)判断不等(当a1和a2是 C语言标量、结构体或联合体时使用);XCTAssertEqualWithAccuracy(a1, a2, accuracy, format...)判断相等,(double或float类型)提供一个误差范围,当在误差范围(+/-accuracy)以内相等时通过测试;XCTAssertNotEqualWithAccuracy(a1, a2, accuracy, format...) 判断不等,(double或float类型)提供一个误差范围,当在误差范围以内不等时通过测试;XCTAssertThrows(expression, format...)异常测试,当expression发生异常时通过;反之不通过;XCTAssertThrowsSpecific(expression, specificException, format...) 异常测试,当expression发生specificException异常时通过;反之发生其他异常或不发生异常均不通过;XCTAssertThrowsSpecificNamed(expression, specificException, exception_name, format...)异常测试,当expression发生具体异常、具体异常名称的异常时通过测试,反之不通过;XCTAssertNoThrow(expression, format…)异常测试,当expression没有发生异常时通过测试;XCTAssertNoThrowSpecific(expression, specificException, format...)异常测试,当expression没有发生具体异常、具体异常名称的异常时通过测试,反之不通过;XCTAssertNoThrowSpecificNamed(expression, specificException, exception_name, format...)异常测试,当expression没有发生具体异常、具体异常名称的异常时通过测试,反之不通过
0 0
- iOS开发之单元测试/Unit Tests
- Ionic单元测试(Unit Tests)
- android应用开发之:单元测试(unit testing)
- Unit tests
- Unit Tests
- 使用Android Studio进行本地单元测试(Local Unit Tests)
- android测试详解_2-Building Local Unit Tests-本地单元测试
- iOS开发之单元测试
- iOS开发之单元测试
- iOS开发之单元测试
- iOS开发之单元测试
- iOS开发之单元测试
- 单元测试(Unit Test) 之大小
- 单元测试(Unit Test) 之大小
- 单元测试(Unit Test) 之大小
- 单元测试(Unit Test) 之大小
- iOS开发进阶之单元测试
- iOS开发进阶之单元测试
- GIS离线地图瓦片的生成及发布
- Android应用开发之(通过ClipboardManager, ClipData进行复制粘贴)
- android 设置系统屏幕亮度
- R把科学计数法表示的数字转化为文本
- Linux下重启tomcat
- iOS开发之单元测试/Unit Tests
- Leetcode no. 347
- 零基础到架构师 不花钱学JavaEE(基础篇)- 概述
- python判断输入的内容是否是emoji表情:
- Android中的复制粘贴
- IDEA加上“打开文件夹”
- iOS通知 you still need to add "remote-notification" to the list of your supported UIBackgroundModes
- 面试题14:基于某个条件来调整数组中元素的位置
- 打造浪漫的Android表白程序