一. 单元测试

简介:

单元测试, 又称模块测试, 是针对程序模块的最小单位来进行测试. 对于过程化变成来说, 一个单元就是单个函数 \ 过程等; 对于面向对象变成来说, 一个单元就是一个方法.

有了单元测试, 我们不需要每次都com+R 启动我们的程序,对于大的项目来说, 启动一次项目都会花费很长时间, 这时使用单元测试, 就方便了很多;

使用:

1.  添加测试文件

a.在创建项目的时候, 可以直接勾选include Unit Test

b.项目已存在, 可添加: File -> New -> Target -> Unit Test

文件中默认包含的四个方法:

 - (void)setUp
//初始化的代码,在测试方法调用之前调用
- (void)tearDown
// 释放测试用例的资源代码,这个方法会每个测试用例执行后调用
- (void)testExample 
// 测试用例的例子,注意自己写的测试用例方法 一定要test开头
- (void)testPerformanceExample {
// 测试性能例子
[self measureBlock:^{
// Put the code you want to measure the time of here.
// 需要测试性能的代码
}];
}

2.测试 某个类中的方法

例如:

- (void)setUp {

[super setUp];

self.vc = [[ViewController alloc] init];

}

- (void)tearDown {

self.vc = nil;

[super tearDown];

}

- (void)testMyFuc {

// 调用需要测试的方法,

int result = [self.vc getNum];

// 如果不相等则会提示@“测试不通过”

XCTAssertEqual(result, 200,@"测试不通过");

}

二. UI 测试

需要写一些代码, 来模拟 人为的操作, 从而根据结果,来判断正确与否

- (void)testLogin{

[XCUIDevice sharedDevice].orientation = UIDeviceOrientationFaceUp;

[XCUIDevice sharedDevice].orientation = UIDeviceOrientationFaceUp;

//XCUIApplication 这是应用的代理,他能够把你的应用启动起来,并且每次都在一个新进程中。

XCUIApplication *app = [[XCUIApplication alloc] init];

//XCUIElement 这是 UI 元素的代理。元素都有类型和唯一标识。可以结合使用来找到元素在哪里,如当前界面上的一个输入框

XCUIElement *usernameTextField = app.textFields[@"username:"];

[usernameTextField tap];

[usernameTextField typeText:@"xiaofei"];

XCUIElement *passwordTextField = app.textFields[@"password:"];

[passwordTextField tap];

[passwordTextField tap];

[passwordTextField typeText:@"12345"];

[[[[[[[app childrenMatchingType:XCUIElementTypeWindow] elementBoundByIndex:0] childrenMatchingType:XCUIElementTypeOther].element childrenMatchingType:XCUIElementTypeOther].element childrenMatchingType:XCUIElementTypeOther].element childrenMatchingType:XCUIElementTypeOther].element tap];

[app.buttons[@"login"] tap];

//登录成功后的控制器的title为loginSuccess,只需判断控制器的title时候一样便可判断登录是否成功

//    XCTAssertEqualObjects(app.navigationBars.element.identifier, @"loginSuccess");

XCTAssertEqual(app.navigationBars.element.identifier, @"loginSuccess",@"测试不通过");

}

参考链接:

http://www.jianshu.com/p/07cfc17916e8

单元测试 + UI测试的更多相关文章

  1. angular单元测试与自动化UI测试实践

    关于本文:介绍通过karma与jsmine框架对angular开发的应用程序进行单元与E2E测试. angular单元测试与集成测试实践 先决条件 创建项目 webstorm中创建空白web项目 创建 ...

  2. 在Android Studio中进行单元测试和UI测试

    本篇教程翻译自Google I/O 2015中关于测试的codelab,掌握科学上网的同学请点击这里阅读:Unit and UI Testing in Android Studio.能力有限,如有翻译 ...

  3. iOS 单元测试和UI测试教程

    原文:iOS Unit Testing and UI Testing Tutorial 作者:Audrey Tam 译者:kmyhy 编写测试不是为了追求刺激,测试是为了避免你崭新的 App 变成了充 ...

  4. WWDC15 Session笔记 - Xcode 7 UI 测试初窥

    https://onevcat.com/2015/09/ui-testing/ WWDC15 Session笔记 - Xcode 7 UI 测试初窥 Unit Test 在 iOS 开发中已经有足够多 ...

  5. Google推出iOS功能性UI测试框架EarlGrey

    经过了一段时间的酝酿后,Google很高兴地宣布了EarlGrey,一款针对于iOS的功能性UI测试框架.诸如YouTube.Google Calendar.Google Photos.Google ...

  6. Google+ 团队的 Android UI 测试

    https://github.com/bboyfeiyu/android-tech-frontier/tree/master/android-blog/Google%2B%20%E5%9B%A2%E9 ...

  7. 使用karma做多浏览器的UI测试

    avalon1.6开发得差不多,这次使用先进的开发理念进行开发,比如模块化,单元测试什么... ui测试是重要的一环,之前用阿里的totoro,但打开浏览器不方便.于是从webdrieverio, n ...

  8. ant design pro (十二)advanced UI 测试

    一.概述 原文地址:https://pro.ant.design/docs/ui-test-cn UI 测试是项目研发流程中的重要一环,有效的测试用例可以梳理业务需求,保证研发的质量和进度,让工程师可 ...

  9. 记录项目代码迁移后,UI测试框架的搭建(配置文件的修改、测试脚本试运行)

    前文:记录一次项目代码迁移过程 上文代码迁移的目的就是为了新增vue脚手架自带的UI测试框架,工具有了,就需要实践运行在项目中了(修改配置文件.编写测试脚本等). 一.单元测试 测试框架 karma ...

随机推荐

  1. 【原】Coursera—Andrew Ng机器学习—课程笔记 Lecture 1_Introduction and Basic Concepts 介绍和基本概念

    目录 1.1 欢迎1.2 机器学习是什么 1.2.1 机器学习定义 1.2.2 机器学习算法 - Supervised learning 监督学习 - Unsupervised learning  无 ...

  2. Aws s3 api

    PUT操作的这个实现将一个对象添加到一个bucket中. 您必须具有对bucket的WRITE权限才能向其中添加对象. Amazon S3从不添加部分对象; 如果您收到成功响应,则Amazon S3将 ...

  3. Perl基础语法

    一.脚本文件perl 代码可以写在一个文本文件中,以 .pl..PL 作为后缀.文件名可以包含数字,符号和字母,但不能包含空格,可以使用下划线(_)来替代空格.一个简单的Perl 文件名:rurun_ ...

  4. 图论算法》关于SPFA和Dijkstra算法的两三事

    本来我是想把这两个算法分开写描述的,但是SPFA其实就是Dijkstra的稀疏图优化,所以其实代码差不多,所以就放在一起写了. 因为SPFA是Dijkstra的优化,所以我想来讲讲Dijkstra. ...

  5. PHP Liunx 服务安全防范方案

    PHP100平均每个月都会有入侵或者攻击,我们做了很多工作,当然很多高手们还是可以入侵,这我们并不感到奇怪,因为我们相信天外有天,人外有人,虽然 我们现在服务器还是稳定(高手们不要来喷了),我们把我们 ...

  6. jQuery div鼠标移动效果

    <head runat="server"> <meta http-equiv="Content-Type" content="tex ...

  7. VS运行release版本正常,直接执行exe文件会出现问题

    博客转载自:https://blog.csdn.net/weixinhum/article/details/39962483 检测了一下自己的程序,发现程序先后开启了两个线程,并且对两个线程的启动顺序 ...

  8. Math.max()

    返回两个指定的数中带有较大的值的那个数.

  9. input file 获取不到Request.Files 解决办法

    <input type="file" name="xxxxxxx"/>必须有“name”属性,否则在后台代码中用Request.Files是取不到值 ...

  10. c#并发编程经典实例文摘

    第1章 并发编程概述 1.1 并发编程简介 并发: 多线程(包括并行处理) 异步编程(异步操作)程序启动一个操作,而该操作将会在一段时间后完成 响应时编程(异步事件)可以没有一个实际的开始,可以在任何 ...