美文网首页
iOS开发中的单元测试

iOS开发中的单元测试

作者: Isy | 来源:发表于2016-07-03 21:16 被阅读129次

    OCUnit

    OCUnit是Xcode 4.x集成的单元测试框架,OCUnit中的测试分为两类,一类称为Logic Tests,另一类称为Application Tests。Logic Tests更倾向于所谓的白盒测试,用于测试工程中较细节的逻辑;Application Tests更倾向于黑盒测试,或接口测试,用于测试直接与用户交互的接口。

    ·添加单元测试

    OCUnit是Xcode集成的,所以其与工程结合理应是最好的。添加到工程中的成本也理应最低。使用XCode创建新工程的流程中就有一个Include Unit Tests的选项,新的工程就会自动生成一个Logic Tests。

    单元测试图1
    向已经存在的工程中添加OCUnit Logic Tests也不复杂,只需要添加一个类型为:Cocoa Touch Unit Testing Bundle的Target即可。
    向已存在的工程中添加OCUnit测试
    向已有的额工程中添加一个测试Target时,XCode会自动生成一个Scheme,运行单元测试用例和Build原工程需要切换不同的Scheme。如果认为切换Scheme非常麻烦,也可在添加Target之前,在Manage Scheme菜单中取消Autocreate schemes

    添加Target不创建Scheme
    ·创建测试用例

    OCUnit的测试用例最常用的方法有三个

    1.- (void)setUp:每个test方法执行前调用

    2.- (void)tearDown:每个test方法执行后调用

    3.- (void)testXXX:命名为XXX的测试方法

    添加Target之时XCode已经自动创建了一个测试用例:UITestDemoTests,其中UnitTestDemo是工程的名字,该类中已经包含了setUp,tearDown和testExample三个方法

    通过command+n,选择Objective-C test case class创建一个新的测试用例。通过Xcode创建的测试用例类死一个继承自SenTestCase(OCUnit由SEN:TE公司开发,因此基类命名为SenTestCase)的空类,需要模仿UnitTestDemoTests编写测试方法。

    创建一个测试用例
    开发者可以自己实现无返回值,且命名规则为testXXX的实例方法,并且使用框架提供的大量断言方法。

    LogicTests与Application Tests的区别主要在setUp方法,Logic Tests只需在setUp方法中初始化一些测试数据,而Application Tests需要在setUp方法中获取主应用的AppDelegate,供test方法调用。

    值得注意的是,OCUnit的test bundle是侵入主应用的,因此在使用过程中要十分注意,不要让单元测试的资源,造成诡异的Bug。

    ·运行测试

    由于OCunit是集成在Xcode中的框架,因此在Xcode中运行也比较方便。切换到单元测试的scheme(如与工程公用的scheme则无需切换),Product->Test(或直接使用快捷键Command+U),框架会自动查找所有工程中SenTestCase的子类,运行其中全部命名类似testXXX的无返回值方法。

    ·测试反馈

    OCUnit的失败方法会通过Console和Xcode Issues两个位置反馈,通过Xcode Issues可以直接定位到出现错误的单元测试代码行。Issue的提示信息就是在单元测试断言方法中定义的description。

    未完 本文摘自

    http://www.cocoachina.com/industry/20130724/6667.html

    相关文章

      网友评论

          本文标题:iOS开发中的单元测试

          本文链接:https://www.haomeiwen.com/subject/furcjttx.html