zoukankan      html  css  js  c++  java
  • iOS 测试驱动开发

    测试驱动开发是敏捷开发的一部分,它一般有“red-green- refactor”步骤

    iOS测试驱动开发的工具

    一、 OCUnit 是Xcode自带的测试工具

    其使用步骤分为

    1 建立测试的Target

    对于测试的Target可分为两种:logic test 和application test ,其中逻辑测试可独立执行,应用测试需要启动App。

    对于应用测试需要Builder Setting配置好Bundle Loader 和Test Host的值,以便改Target可以用到。

    Set the value of the Bundle Loader build setting to:

    2 编写unit test case

    OCUnit的test case都继承自抽象类SenTestCase,所以在编写自己的测试类时,

    1 从SenTestCase继承

    2 在setUp方法中完成完成测试环境的建立,一般时创建初始化被测试类的实例(在每个test函数执行钱,会被调用)

    若要对于同一测试类中不同的测试函数,需要setUp不同的环境,可以考虑使用setUpTestWithSelector:(SEL)testMethod;

    3 编写自己的测试函数如:testMyExample(需以test为前缀),使用断言来声明期望的测试结果

    常用的断言有

    STAssertNil 断言对象为空

    STAssertNotNil断言对象为为空

    STAssertTrue 断言表达式为真

    STAssertFalse断言表达式为假

    STAssertEquals 断言两个变量值相等

    STAssertEqualObjects断言两个对象相等

    STAssertThrows 断言抛出异常

    STAssertNoThrow 断言味抛出异常

    更多断言可参看SenTestingKit/SenTestingUtilities.h文件

    4 在tearDown完成测试环境的恢复(每个test函数执行完后,会被调用


    3 运行单元测试

           command+U


    具体的细节可参考官方文档

    二、GHUnit 

    测试框架,可视化测试结果显示



    三、 测试驱动开发最重要的是,编写高质量的单元测试用例,按照MVC设计模式编写的代码,是有结构的,这个也可以应用到write unit test,对于Model层的test case,其一般结构如下

     

    @class Topic;
    @interface TopicTests : SenTestCase {
        Topic *topic;
    }
    @end


    在TopicTests类中,创建初始化topic,并通过happy result和边界数值,来测试Topic类的行为


    对于Controller层,一般较Model层复杂,会涉及到多个对象,要做的第一步便是孤立耦合,

    对于异步网络类的测试,要借助不发送网络请求的Mock对象,


    对于View层,单元测试覆盖较少,

    四、测试覆盖率

    对于Xcode4.0以上的同学,输出coverage 结果的设置如下:

    在对应的Target下,进入Build Setting界面

    设置Generate Test Coverage Files:YES

    Instrument Program Flow :YES

    这是进入/Users/<username>/Library/Developer/Xcode/DerivedData/<app_name-<Serial>>/Build/Intermediates/<app_name>.build/Debug-iphonesimulator/<target_name>.build/Objects-normal/i386

    会发下该文件夹下有.gcda和.gcno文件,这时候便是Xcode的LLVM输出了测试结果,下载一个CoverStory ,打开相应的文件变可看到






  • 相关阅读:
    堆排序算法的原理和实现
    图的深度优先搜索(DFS)和广度优先搜索(BFS)算法
    图的迪杰斯特拉算法求最短路径
    第13章 切换到混合流并添加API访问
    第12章 添加对外部认证的支持
    第11章 使用OpenID Connect添加用户身份验证
    第10章 使用密码保护API
    第9章 使用客户端凭据保护API
    第8章 概述
    第7章 贡献
  • 原文地址:https://www.cnblogs.com/jiangu66/p/3188364.html
Copyright © 2011-2022 走看看