[基础]iOS 单元测试(一)入门与配置

全部文章目录:http://my.oschina.net/ChenTF/blog/677112html

本篇文章地址: http://my.oschina.net/ChenTF/blog/677309git

会持续的更新全部历史文章, 因此收藏的话请收藏上面的地址。github

workspace — project — targets 讲解

    一个工做空间能够包含多个项目,一个项目能够包含多个目标(生成物)。express

    一个项目中根据运行的targets不一样,能够进行不一样的编译设置,project是基础父类,targets是子类,targets的设置会覆盖project的设置。缓存

 

Target与单元测试的关系

     单元测试是在一个新的target上进行的设置,这样就不会影响程序开发,编译。函数

     在XCode7中建立一个项目时默认是选中建立测试target的,若是没有,建立方法以下:File -> New -> target -> UITest/UnitTest,建立完成后会自动建立对应的文件夹。单元测试

UnitTest

     使用该UnitTest测试一些代码逻辑,使用UITest测试UI的点击交互逻辑。测试

1.建立要测试的代码

2.建立测试类

说明:ui

  • 任何测试类都须要继承自 XCTestCase 类
  • setUp,tearDown是系统默认方法
  • 命名:测试的目标类名+Tests

3.编写测试方法

说明:spa

  • 测试方法必须以testXXX开头,Xcode会自动识别出全部的测试方法
  • 在一个类中测试方法的调用顺序是按照方法的顺序来调用的,本例中1 -> 2 -> 3。
  • 须要测试某些逻辑性操做时,要主要测试方法的编写顺序,好比 1先插入10条数据 -> 2根据id查询数据 -> 3查询全部数据
  • 每一个测试方法是分开到,调用顺序 setUp -> test1 -> tearDown, setUp -> test2 -> tearDown,这样保证各个测试用例直接不会互相影响

调用:

  • 执行全部测试方法:command + u
  • 只执行某个测试方法:点击方法前的菱形(目前是对号/错号)
  • 执行某个类的全部测试方法:点击类前的菱形(目前是对号/错号)

 

4.测试结果与XCTAssert断言函数

     一个测试是否经过,是须要经过XCTassert类来进行验收的,XCTAssert是 一系列宏方法,提供了不少的判断(下面会列举)。

     若是经过则是在方法前是√,没有打印;若是失败则方法前是×,打印。(看上图)

打印:

测试用例列表:

XCTAssert宏方法

参考地址:http://my.oschina.net/u/1418722/blog/340194?fromerr=RUMiSWBO

XCTFail(...)
任未尝试都会测试失败,...是输出的提示文字。(后面都是这样)

XCTAssertNil(expression, ...)
expression为空时经过,不然测试失败。
expression接受id类型的参数。

XCTAssertNotNil(expression, ...)
expression不为空时经过,不然测试失败。
expression接受id类型的参数。

XCTAssert(expression, ...)
expression为true时经过,不然测试失败。
expression接受boolean类型的参数。

XCTAssertTrue(expression, ...)
expression为true时经过,不然测试失败。
expression接受boolean类型的参数。

XCTAssertFalse(expression, ...)
expression为false时经过,不然测试失败。
expression接受boolean类型的参数。

XCTAssertEqualObjects(expression1, expression2, ...)
expression1和expression1地址相同时经过,不然测试失败。
expression接受id类型的参数。

XCTAssertNotEqualObjects(expression1, expression2, ...)
expression1和expression1地址不相同时经过,不然测试失败。
expression接受id类型的参数。

XCTAssertEqual(expression1, expression2, ...)
expression1和expression1相等时经过,不然测试失败。
expression接受基本类型的参数(数值、结构体之类的)。

XCTAssertNotEqual(expression1, expression2, ...)
expression1和expression1不相等时经过,不然测试失败。
expression接受基本类型的参数。

XCTAssertEqualWithAccuracy(expression1, expression2, accuracy, ...)
expression1和expression2之间的任何值都大于accuracy时,测试失败。
expression一、expression二、accuracy都为基本类型。

XCTAssertNotEqualWithAccuracy(expression1, expression2, accuracy, ...)
expression1和expression2之间的任何值都小于等于accuracy时,测试失败。
expression一、expression二、accuracy都为基本类型。

XCTAssertGreaterThan(expression1, expression2, ...)
expression1 <= expression2时,测试失败。
expression为基本类型

XCTAssertGreaterThanOrEqual(expression1, expression2, ...)
expression1 < expression2时,测试失败。
expression为基本类型

XCTAssertLessThan(expression1, expression2, ...)
expression1 >= expression2时,测试失败。
expression为基本类型

XCTAssertLessThanOrEqual(expression1, expression2, ...)
expression1 > expression2时,测试失败。
expression为基本类型

XCTAssertThrows(expression, ...)
expression没抛异常,测试失败。
expression为一个表达式

XCTAssertThrowsSpecific(expression, exception_class, ...)
expression没抛指定类的异常,测试失败。
expression为一个表达式
exception_class为一个指定类

XCTAssertThrowsSpecificNamed(expression, exception_class, exception_name, ...)
expression没抛指定类、指定名字的异常,测试失败。
expression为一个表达式
exception_class为一个指定类
exception_name为一个指定名字

XCTAssertNoThrow(expression, ...)
expression抛出异常时,测试失败。
expression为一个表达式

XCTAssertNoThrowSpecific(expression, exception_class, ...)
expression抛出指定类的异常,测试失败。
expression为一个表达式

XCTAssertNoThrowSpecificNamed(expression, exception_class, exception_name, ...)
expression抛出指定类、指定名字的异常,测试失败。
expression为一个表达式
exception_class为一个指定类
exception_name为一个指定名字

测试环境的部署

1.Target Membership

参考:http://www.cnblogs.com/graphics/p/4117353.html

    Target membership是指XCode中,一个文件属于哪个工程,在XCode左侧的工程面板中选中一个文件,在XCode右侧的属性面板中会显示其Target Membership,以下图。

    当前的文件AppDelegate.m属于书谱这个Target。

Target Membership的一些属性。

  • .h  文件没有Target Membership
  • 文件夹引用有Target Membership,其子文件继承该文件夹的Target Membership。但面板中不显示子文件的Target Membership。

    之前遇到一个错误,就是UIImage建立的时候返回nil,仔细查看发现,图片的Target Membership选项没有勾上。这个错误比较难以发现,特此记之。

 

2.Link Binary With Libraries

     在测试本地存储是,若是须要一些二进制文件的支持,则test targert也须要引入相应的文件(配置和正常项目需同样)。

 

3.设置本地的支持文件路径

提醒:

     每次修改完配置文件,建议先Clean(Command+Shift+K)缓存,再编译。

4.PCH

    pch 和main target设置成一直, 注意Precompile Prefix Header选项。

 

5.Pods设置

     当项目中有pod时, 在测试文件中引用pods的文件, 提示找不到, 错误以下:

     解决方案: 设置PROJECT的Configurations

 

6.plist设置

     两种方案

     一: 设置plist文件与build一致

     二: 将info.plist路径改为build target的路径

 

 

Code

https://github.com/ChenTF/Experiences/tree/master/XCodeSetting

相关文章
相关标签/搜索