swift单元测试(三)XCTest之UI测试UITest

继上篇文章介绍了XCTest中的单元测试,这片土地主要介绍下苹果官方测试框架XCTest中的的UITest。

1、UITest简介

        UI Tests是一个自动测试UI与交互的Testing组件。UI testing允许你找到UI元素并与之交互,还能检查属性和状态.可以和单元测试一起执行. UITest使用的OC/Swift语言的自动化测试。

        可以通过编写代码、或者是记录开发者的操作过程并代码化,来实现自动点击某个按钮、视图,或者自动输入文字等功能。随着项目功能的增加,旧功能也需要重新测试,导致了大量重复工作,这些重复的工作有些是可以自动完成的,UI Tests就可以帮助解决这个问题了。

 

2、UITest进行UI测试

1)创建一个UI测试target

UI测试target的创建方法类似于单元测试的创建方式,也是有两种,只是选择的target类型不同

方式一:通过创建新项目时,勾选 Include UI Tests

方式二:在已存在的项目中创建,按comman+5 打开xcode的测试导航器,点击左下角的+ 按钮,然后从菜单中选择New UI Test Target…

                                               

2)如果已有target,想新建不同的测试类,按command+n 打开新建文件,选择UI Test Case Class,创建不同的UI测试文件

3)运行方式

UI测试文件的运行方式也是command+u,测试全部,或者点击类/方法的钻石标志

4)UI测试文件的使用

文件创建好后,会自动创建以下函数

从注释我们可以知道这3个函数的意思

函数用途
setUp 

1)继承与XCTestCase 函数测试文件开始执行的时候运行 

2)setup中的XCUIApplication().launch()用于启动app

3)可以自定义一个setup函数,将launch方法调用放在自定义函数里,然后添加自己的数据加载

tearDown 继承与XCTestCase 测试函数运行完之后执行
testExample 测试的例子函数

(1)将自带的testExample删除,添加testUI,方法是空白的

(2)光标放进到这个大括号里面,看到如下图中 的小红点。点击这个录制屏幕的按钮。应用启动。我们点击项目中的按钮跳转,函数中会根据您的操作自动生成代码

(3)你可以点击该函数的钻石标志运行,会重复您刚才的操作

(4)您也可以在操作代码自动加入后,或者手写操作代码后,加入断言判断是否是您想要的结果。

5)常用基本操作

(1)点击按钮:app.buttons["登录"].tap()

(2)输入框输入文本

app.textFields["手机号"].tap()    //要先聚焦文本框,才能继续输入

app.textFields["手机号"].typeText("13038865629")

等等

 

3、代码中控件的获取方式

类似于 app.buttons["TDD驱动测试界面"] 这样的,如果我们需要人为手写操作代码,如何获取控件,可以通过button的title或者设置的identifer获取button,类似的还有app.tables, app.textFields,app.staticTexts等等.

xcode也有一个帮助工具 Accessibility Inspector 来获取控件的属性

点击中间的按钮,选中控件,可以看到控件的属性,我们一般利用其title来获取控件

到此,UITest的简单使用就介绍完了......

 

当我们进行软件开发时,单元测试是一种非重要的实践,它可以帮助我们验证代码的正确性并提高代码质量。在Swift中,我们可以使用XCTest框架来编写和运行单元测试。 下面是一个简单的Swift单元测试例子: ```swift import XCTest // 需要测试的函数 func add(_ a: Int, _ b: Int) -> Int { return a + b } // 测试用例类 class MyTests: XCTestCase { // 测试add函数 func testAdd() { XCTAssertEqual(add(2, 3), 5) // 断言add(2, 3)的结果应该等于5 XCTAssertEqual(add(-1, 1), 0) // 断言add(-1, 1)的结果应该等于0 XCTAssertEqual(add(0, 0), 0) // 断言add(0, 0)的结果应该等于0 } // 可选:设置测试用例执行前的准备工作 override func setUp() { super.setUp() // 在这里进行一些准备工作,比如初始化对象等 } // 可选:设置测试用例执行后的清理工作 override func tearDown() { // 在这里进行一些清理工作,比如释放资源等 super.tearDown() } } // 运行测试用例 let testCase = MyTests() testCase.testAdd() ``` 在上面的例子中,我们定义了一个名为`add`的函数,然后使用`XCTAssertEqual`断言来验证函数的返回值是否符合预期。我们还创建了一个名为`MyTests`的测试用例类,其中包含了一个名为`testAdd`的测试方法。在`testAdd`方法中,我们使用了个断言来验证`add`函数的不同输入情况下的返回值。 你可以根据需要编写更多的测试用例,并在`setUp`和`tearDown`方法中进行一些准备和清理工作。最后,通过创建测试用例对象并调用相应的测试方法来运行测试
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值