测试驱动开发是敏捷开发的一部分,它一般有“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,打开相应的文件变可看到

iOS 测试驱动开发的更多相关文章

  1. Scrum敏捷软件开发之技术实践——测试驱动开发TDD

    重复无聊的定义 测试驱动开发,英文全称Test-Driven Development,简称TDD,是一种不同于传统软件开发流程的新型的开发方法.它要求在编写某个功能的代码之前先编写测试代码,然后只编写 ...

  2. 使用模拟对象(Mock Object)技术进行测试驱动开发

    敏捷开发 敏捷软件开发又称敏捷开发,是一种从上世纪 90 年代开始引起开发人员注意的新型软件开发方法.和传统瀑布式开发方法对比,敏捷开发强调的是在几周或者几个月很短的时间周期,完成相对较小功能,并交付 ...

  3. 软件工程 - Test-Driven Development (TDD),测试驱动开发

    参考 https://baike.baidu.com/item/%E6%B5%8B%E8%AF%95%E9%A9%B1%E5%8A%A8%E5%BC%80%E5%8F%91/3328831?fr=al ...

  4. TDD测试驱动开发

    TDD测试驱动开发 一.概念 TDD故名思意就是用测试的方法驱动开发,简单说就是先写测试代码,再写开发代码.传统的方式是先写代码,再测试,它的开发方式与之正好相反. TDD是极限编程的一个最重要的设计 ...

  5. Cucumber测试驱动开发

     Cucumber是一种BDD实践开发工具,属于敏捷开发的组成部分.      在敏捷开发中,对用户进行需求分析时,不是像传统的P&D的开发方式,首先编写大量的用户需求分析文档,而是通过一个个 ...

  6. Django 1.6 的测试驱动开发

    http://www.oschina.net/translate/django-1-6-test-driven-development 测试驱动开发(TDD)是一个迭代的开发周期,强调编写实际代码之前 ...

  7. Visual Studio 2012 Fakes框架测试驱动开发TDD教程

    一.前言 最近团队要尝试TDD(测试驱动开发)的实践,很多人习惯了先代码后测试的流程,对于TDD总心存恐惧,认为没有代码的情况下写测试代码时被架空了,没法写下来,其实,根据个人实践经验,TDD并不可怕 ...

  8. 我看TDD测试驱动开发

    今天在实验室给大家介绍了一下TDD和Docker,大家对TDD都比较感兴趣,包括老板,也问了一些问题. 还是从头来说TDD吧,TDD作为敏捷开发领域的领头军,充满魅力,同时也充满争议.一切从三大军规说 ...

  9. Django 测试驱动开发

    第一章 1.编写functional_tests.py from selenium import webdriver browser = webdriver.Firefox() browser.get ...

随机推荐

  1. STL源代码分析——STL算法sort排序算法

    前言 因为在前文的<STL算法剖析>中,源代码剖析许多,不方便学习,也不方便以后复习.这里把这些算法进行归类,对他们单独的源代码剖析进行解说.本文介绍的STL算法中的sort排序算法,SG ...

  2. XAMPP on Mac 组态 Virual Host

    首先,在hosts文件中添加virtual host域名.方向127.0.0.1 我一般使用的命名约定dev-domainname.com sudo nano /private/etc/hosts # ...

  3. TRS_WCM(拓尔思信息技术有限公司)内容协作平台平台置标经验攻略

    TRS_WCM置标过程中经验积累 版本V4.0-2014.6.24-穿越者7号 目录 1.嵌套模板置标 1 2.栏目名称超链接置标 1 3.列表循环输出文档标题包含超链接 1 4.取既定栏目下第一篇文 ...

  4. OpenGL入门【1 高速入门】

    // OpenGL.cpp : 定义控制台应用程序的入口点. // #include "stdafx.h" #include<iostream> #include &l ...

  5. 在地图中使用Java

    Map以按键/数值对的形式存储数据,和数组很类似,在数组中存在的索引,它们本身也是对象.       Map的接口       Map---实现Map       Map.Entry--Map的内部类 ...

  6. JS自动化测试 单元测试之Qunit

    前言 因为公司开发了一套javascript SDK需要测试,在网上找了很久,找到了JQuery团队开发的QUnit,和基于JUnit的JsUnit,还有一些还没有看,先讲讲QUnit吧 下载 登录J ...

  7. IIS服务器 远程发布(Web Deploy)配置 VS2010 开发环境 Windows Server 2008服务器系统

    原文:IIS服务器 远程发布(Web Deploy)配置 VS2010 开发环境 Windows Server 2008服务器系统 asp.net 网站有三种常用的发布方式:分别是拷贝开发机上发布好的 ...

  8. windows下使用pthread

    有的时候需要使用多线程来测试代码啥的,在Linux下有pthread,在windows也有. 我这儿是使用MingW作为编译工具,具体如何下载MingW自行在网上搜索. 而pthread是在这里下载的 ...

  9. POI操作Excel详细解释,HSSF和XSSF两种方式

    HSSF道路: package com.tools.poi.lesson1; import java.io.FileInputStream; import java.io.FileNotFoundEx ...

  10. 对于发Github的contributions贡献不会增加

    最近发现每天在 Github 做代码提交,可是 contributions 的面板(贡献图)上的绿点(即贡献值)却没有增长了.擦~ 有两个礼拜了. 例如以下图并且.同一时候发现曾经的绿点也是稀稀拉拉的 ...