这里是经由过程前后tableview的row数量来断言成功或者掉败。
等待
平日,在视图切换的时刻有转场动画,我们须要等待动画停止,然后才能持续,不然query的时刻很可能找不到我们想要的控件。
比如,如下代码等待VC转场停止,当query只有一个table的时刻,才持续履行后续的代码。
- [self expectationForPredicate:[NSPredicate predicateWithFormat:@"self.count = 1"]
- evaluatedWithObject:app.tables
- handler:nil];
- [self waitForExpectationsWithTimeout:2.0 handler:nil];
- //后续代码....
Tips: 当你的UI构造比较复杂的时刻,比如各类嵌套childViewController,应用XCUIElementQuery的代码会很长,也不好保护。
别的,UI测试还会在每一步操作的时刻截图,便利对测试申报进行验证。
查看测试结不雅
应用基于XCTest的框架,可以在XCode的report navigator中查看测试结不雅。

个中:
- Tests 用来查看具体的测试过程
- Coverage 用来查看代码覆盖率
- Logs 用来查看测试的日记
- 点击图中的红色框指向的搁笔可以看到每一步UI操作的截图
除了应用XCode的GUI,还可以经由过程后文提到的敕令行对象来测试,查看结不雅。
Stub/Mock
平日,如不雅你采取纯存的XCTest,推荐采取OCMock来实现mock和stub,单位测试的三方库平日已集成了stub和mock。
那么,若何应用mock呢?举个官方的例子:
- //mock一个NSUserDefaults对象
- id userDefaultsMock = OCMClassMock([NSUserDefaults class]);
- //在调用stringForKey的时刻,返回http://testurl
- OCMStub([userDefaultsMock
- stringForKey:@"MyAppURLKey"]).andReturn(@"http://testurl");
再比如,我们要测试打开其他App,那么若何断定确切打开了其他App呢?
- id app = OCMClassMock([UIApplication class]);
- OCMStub([app sharedInstance]).andReturn(app);
- OCMVerify([app openURL:url]
应用Stub可以让我们很便利的实现这个。
关于OCMock的应用,推荐看看objc.io的┞封篇文┞仿
- 置换测试: Mock, Stub 和其他
https://objccn.io/issue-15-5/
Quick
Quick是建立在XCTestSuite上的框架,应用XCTestSuite许可你动态创建测试用例。所以,应用Quick,你仍让可以应用XCode的测试相干GUI和敕令行对象。
应用Quick编写的测试用例看起来是如许子的:
- import Quick
- import Nimble
- class TableOfContentsSpec: QuickSpec {
- override func spec() {
- describe("the 'Documentation' directory") {
- it("has everything you need to get started") {
- let sections = Directory(
推荐阅读
如何安装Debian的非systemd复刻版本Devuan Linux
Devuan Linux 是 Debian 最新的复刻版本,是基于 Debian 的一个被设计为完全去除了 systemd 的版本。设置 Devuan Linux 的域名Devuan 宣布于 2014 岁尾,并经由了一段活泼的开辟。最新的发>>>详细阅读
本文标题:iOS自动化测试的那些干货
地址:http://www.17bianji.com/lsqh/34681.html
1/2 1

网友点评
精彩导读
科技快报
品牌展示