[Xcode 实际操做]7、文件与数据-(23)UI Testing系统界面测试功能的使用

目录:[Swift]Xcode实际操做html

本文将演示UI Testing系统界面测试功能的使用。swift

若是项目中还没有引入界面测试功能,请点击项目属性面板->【General】面板左下角的【+】图标app

->Test模板区域,选择【iOS UI Testing Bundle】->【Next】->保持默认设置【Finish】ide

查看【DemoAppUITests】文件夹下的内容。post

打开界面测试代码文件【DemoAppUITests.swift】测试

在【override func tearDown() 】测试案例方法的内部点击,进入该方法。ui

接着点击左下角的记录按钮,将自动打开模拟器,并开始记录在界面中的各项操做。this

点击第一个Add 按钮,添加一个新的视图,此时在模拟器背后的代码文件中,已经记录下刚刚点击的操做。spa

继续点击第二个Switch按钮,调整两个视图的层次关系,code

点击第三个Remove按钮,删除紫色的视图,

接着依次点击三个按钮,重复以前的动做,如今已经记录下了六个交互操做。

再次点击左下角的结束记录按钮,返回界面测试的代码文件。

上文的六次点击操做,都依次被记录下来,当以后须要重复刚刚的测试步骤时,

只需点击方法名称左侧的菱形按钮,便可播放测试记录。

当模拟器打开后,自动重复执行刚刚的六个测试步骤。

 1 import XCTest
 2 
 3 class DemoAppUITests: XCTestCase {
 4 
 5     override func setUp() {
 6         // Put setup code here. This method is called before the invocation of each test method in the class.
 7 
 8         // In UI tests it is usually best to stop immediately when a failure occurs.
 9         continueAfterFailure = false
10 
11         // UI tests must launch the application that they test. Doing this in setup will make sure it happens for each test method.
12         XCUIApplication().launch()
13 
14         // In UI tests it’s important to set the initial state - such as interface orientation - required for your tests before they run. The setUp method is a good place to do this.
15     }
16 
17     override func tearDown() {
18         // Put teardown code here. This method is called after the invocation of each test method in the class.
19         //在测试案例方法的内部点击,进入该方法。
20     }
21 
22     func testExample() {
23         // Use recording to get started writing UI tests.
24         // Use XCTAssert and related functions to verify your tests produce the correct results.
25         //上文的六次点击操做,都依次被记录下来,
26         //当以后须要重复刚刚的测试步骤时,
27         //只需点击方法名称左侧的菱形按钮,
28         //便可播放测试记录。
29         let app = XCUIApplication()
30 
31         //点击第一个Add 按钮,添加一个新的视图
32         let addButton = app.buttons["Add"]
33         addButton.tap()
34 
35         //继续点击第二个Switch按钮,调整两个视图的层次关系,
36         let switchButton = app.buttons["Switch"]
37         switchButton.tap()
38         
39         //点击第三个Remove按钮,删除紫色的视图
40         let removeButton = app.buttons["Remove"]
41         removeButton.tap()
42 
43         //接着依次点击三个按钮,重复以前的动做
44         addButton.tap()
45         switchButton.tap()
46         removeButton.tap()
47     }
48 }

视图控制器的代码文件【ViewController.swift】

 1 import UIKit
 2 
 3 class ViewController: UIViewController {
 4 
 5     override func viewDidLoad() {
 6         super.viewDidLoad()
 7         // Do any additional setup after loading the view, typically from a nib.
 8         //建立一个原点在(30,50),尺寸为(200,200)的矩形常量,做为视图的显示区域
 9         let rect = CGRect(x: 30, y: 50, width: 200, height: 200)
10         //建立一个相应的UIView视图
11         let view = UIView(frame: rect)
12         //设置视图的背景颜色为棕色
13         view.backgroundColor = UIColor.brown
14         //将视图添加到当前视图控制器的根视图
15         self.view.addSubview(view)
16         
17         //建立一个按钮,当点击此按钮时,将动态添加另外一个视图
18         let btAdd = UIButton(frame: CGRect(x: 30, y: 350, width: 80, height: 30))
19         //设置按钮的背景色为灰色
20         btAdd.backgroundColor = UIColor.gray
21         //设置按钮在正常状态下的标题,其余状态还包括按钮被按下等状态
22         btAdd.setTitle("Add", for: UIControl.State())
23         //给按钮绑定点击事件,这样点击按钮时,将执行添加视图方法
24         btAdd.addTarget(self, action: #selector(ViewController.addView(_:)), for: UIControl.Event.touchUpInside)
25         //将按钮添加到当前视图控制器的根视图
26         self.view.addSubview(btAdd)
27         
28         //一样建立第二个按钮,当点击这个按钮时,将切换根视图中,两个视图的层次顺序
29         let btBack = UIButton(frame: CGRect(x: 120, y: 350, width: 80, height: 30))
30         //设置按钮背景色为灰色
31         btBack.backgroundColor = UIColor.gray
32         //设置按钮在正常状态下的标题文字
33         btBack.setTitle("Switch", for: UIControl.State())
34         //给按钮绑定点击事件,当点击按钮时,交换两个视图的层次顺序
35         btBack.addTarget(self, action: #selector(ViewController.bringViewBack(_:)), for: UIControl.Event.touchUpInside)
36         //将按钮添加到当前视图控制器的根视图
37         self.view.addSubview(btBack)
38         
39         //建立第三个按钮,当点击这个按钮时,将从当前视图控制器的根视图中,删除新添加的视图
40         let btRemove = UIButton(frame: CGRect(x: 210, y: 350, width: 80, height: 30))
41         //设置按钮背景色为灰色
42         btRemove.backgroundColor = UIColor.gray
43         //设置按钮在正常状态下的标题文字
44         btRemove.setTitle("Remove", for: UIControl.State())
45         //而后给按钮绑定点击事件,当点击按钮时,执行删除视图的操做
46         btRemove.addTarget(self, action: #selector(ViewController.removeView(_:)), for: UIControl.Event.touchUpInside)
47         //将按钮添加到当前视图控制器的根视图
48         self.view.addSubview(btRemove)
49     }
50     
51     //建立第一个按钮的点击事件
52     @objc func addView(_ sender:UIButton!)
53     {
54         //建立一个原点在(60,90),尺寸为(200,200)的矩形常量,做为视图的显示区域
55         let rect = CGRect(x: 60, y: 90, width: 200, height: 200)
56         //建立一个相应的UIView视图
57         let view = UIView(frame: rect)
58         //设置视图的背景颜色为紫色
59         view.backgroundColor = UIColor.purple
60         //给这个视图指定一个标志,这样就能够在之后须要的时候,经过标志找到这个视图
61         view.tag = 1
62         //添加到当前视图控制器的根视图
63         self.view.addSubview(view)
64     }
65     
66     //建立第二个按钮的点击事件
67     @objc func bringViewBack(_ sender:UIButton!)
68     {
69         //首先经过给视图对象设置的标志值,找到新添加的视图
70         let view = self.view.viewWithTag(1)
71         //将新添加的视图,移到全部兄弟视图的后方
72         self.view.sendSubviewToBack(view!)
73     }
74     
75     //建立第三个按钮的点击事件
76     @objc func removeView(_ sender:UIButton!)
77     {
78         //经过给视图对象设置的标志值,找到新添加的视图
79         let view = self.view.viewWithTag(1)
80         //将新添加的视图删除,也就是从当前视图控制器的根视图中删除
81         view?.removeFromSuperview()
82     }
83 }
相关文章
相关标签/搜索