IOS:UITest单元测试

来源:互联网 发布:魔盒cms微信营销平台 编辑:程序博客网 时间:2024/06/05 06:35

UI Tests是一个自动测试UI与交互的Testing组件

UI Tests有什么用?

它可以通过编写代码、或者是记录开发者的操作过程并代码化,来实现自动点击某个按钮、视图,或者自动输入文字等功能。

UI Tests的重要性

在实际的开发过程中,随着项目越做越大,功能越来越多,仅仅靠人工操作的方式来覆盖所有测试用例是非常困难的,尤其是加入新功能以后,旧的功能也要重新测试一遍,这导致了测试需要花非常多的时间来进行回归测试,这里产生了大量重复的工作,而这些重复的工作有些是可以自动完成的,这时候UI Tests就可以帮助解决这个问题了。

XCTestCase简介

XCTest是Apple官方提供一个测试工具,一个内置的测试框架,从工程里面可以看到,一个“应用名称”的group,我们直接可以使用commond+R 来远行,一个测试的target我们可以使用commond+U来远行测试target,在测试target的目录下会有一个默认的“应用名称”+Test的类,这个类只有.m没有.h,继承于XCTestCase,使用commond+U即可运行。

使用方法

如果项目创建的时勾选了UnitTest,如图
这里写图片描述

如果是已有的项目,可以通过添加target的方式添加一个UI Tests,点击xcode的菜单,找到target栏
这里写图片描述
在Test选项中选择Cocoa Touch UI Testing Bundle

这里写图片描述

创建测试代码

手动创建测试代码
打开测试文件,在testExample()方法中添加测试代码,默认测试类里面有以下方法:

//方法在XCTestCase的测试方法调用之前调用,可以在测试之前创建在test case方法中需要用到的一些对象等- (void)setUp ;//当测试全部结束之后调用tearDown方法,法则在全部的test case执行结束之后清理测试现场,释放资源删除不用的对象等- (void)tearDown ;//测试代码执行性能- (void)testPerformanceExample

XCTestCase使用

XCTestCase的初始化不是用户控制的,针对一个功能块的单元测试(针对某个class),只需要单独给为这个类创建一个继承于XCTestCase,在这个文件内实现上述基本函数以后(一半系统会默认创建这三个函数),其实的逻辑只需要开发者自行定义以“test”开头的函数,然后在内部实现自己针对某个函数、返回数值结果、操作等的测试脚本即可,commond+U执行的时间,单元测试会自动执行这些test打头的函数,当函数头上出现蓝色的标记则表明测试通过,否则直接报红色错误。

XCTest常用工具:

 //断言,最基本的测试,如果expression为true则通过,否则打印后面格式化字符串  XCTAssert(expression, format...)  //Bool测试:    XCTAssertTrue(expression, format...)  XCTAssertFalse(expression, format...)  //相等测试  XCTAssertEqual(expression1, expression2, format...)  XCTAssertNotEqual(expression1, expression2, format...)  XCTAssertEqualObjects(expression1, expression2, format...)  XCTAssertNotEqualObjects(expression1, expression2, format...)  XCTAssertGreaterThan(expression1, expression2, format...)  XCTAssertGreaterThanOrEqual(expression1, expression2, format...)  XCTAssertLessThan(expression1, expression2, format...)  XCTAssertLessThanOrEqual(expression1, expression2, format...)  //double float 对比数据测试使用  XCTAssertEqualWithAccuracy(expression1, expression2, accuracy, format...)//expression1和expression2之间差别大于accuracy时输出format语句  XCTAssertNotEqualWithAccuracy(expression1, expression2, accuracy, format...)//expression1和expression2之间差别小于或者等于accuracy时输出format语句  //Nil测试,XCTAssert[Not]Nil断言判断给定的表达式值是否为nil  XCTAssertNil(expression, format...)  XCTAssertNotNil(expression, format...)  //失败断言       XCTFail(format...)//Exception Tests  XCTAssertThrows(expression, format...)  XCTAssertThrowsSpecific(expression, exception_class, format...)  XCTAssertThrowsSpecificNamed(expression, exception_class, exception_name, format...)  XCTAssertNoThrow(expression, format...)  XCTAssertNoThrowSpecific(expression, exception_class, format...)  XCTAssertNoThrowSpecificNamed(expression, exception_class, exception_name, format...)
0 0