XCTest-9-用戶界面測(cè)試

UI測(cè)試使你能夠找到并與你應(yīng)用程序的UI進(jìn)行交互氯檐,以驗(yàn)證UI元素的屬性和狀態(tài)戒良。

UI測(cè)試包括UI記錄,這使你能夠生成代碼男摧,以相同的方式練習(xí)你的應(yīng)用程序的UI蔬墩,并可以擴(kuò)展到實(shí)現(xiàn)UI測(cè)試译打。這是一個(gè)很好的方式來快速開始編寫UI測(cè)試耗拓。

增強(qiáng)了測(cè)試報(bào)告,以提供有關(guān)UI測(cè)試的詳細(xì)信息奏司,包括測(cè)試失敗時(shí)UI狀態(tài)的快照乔询。

UI測(cè)試基于兩個(gè)核心技術(shù):XCTest框架和輔助功能。

1.XCTest提供了與Xcode集成的UI測(cè)試功能的框架韵洋。創(chuàng)建和使用UI測(cè)試擴(kuò)展了你對(duì)使用XCTest和創(chuàng)建單元測(cè)試的了解竿刁。你創(chuàng)建一個(gè)UI測(cè)試目標(biāo),并且作為項(xiàng)目的一部分創(chuàng)建UI測(cè)試類和UI測(cè)試方法搪缨。你使用XCTest斷言來驗(yàn)證預(yù)期結(jié)果是否為真食拜。你還可以通過Xcode Server和xcodebuild獲得持續(xù)集成。XCTest完全兼容Objective-C和Swift副编。

2.可訪問性是核心技術(shù)负甸,允許殘疾用戶與iOS和macOS相同的豐富的體驗(yàn),其他用戶收到痹届。它包括一組豐富的關(guān)于UI的語義數(shù)據(jù)呻待,用戶可以使用它們來指導(dǎo)他們使用您的應(yīng)用程序《痈可訪問性與UIKit和AppKit集成蚕捉,并具有允許你微調(diào)行為和暴露給外部使用的API的API。UI測(cè)試使用該數(shù)據(jù)來執(zhí)行其功能柴淘。

在源代碼中創(chuàng)建UI測(cè)試類似于創(chuàng)建單元測(cè)試迫淹。你為應(yīng)用程序創(chuàng)建UI測(cè)試目標(biāo); 那么Xcode將為你創(chuàng)建一個(gè)默認(rèn)的UI測(cè)試組和實(shí)現(xiàn)文件秘通,并在實(shí)現(xiàn)文件中使用示例測(cè)試方法模板。創(chuàng)建UI測(cè)試目標(biāo)時(shí)敛熬,指定測(cè)試將處理的應(yīng)用程序充易。

UI測(cè)試的工作原理是通過查找應(yīng)用程序的UI對(duì)象,合成事件并將它們發(fā)送到這些對(duì)象荸型,并提供豐富的API盹靴,使你能夠檢查UI對(duì)象屬性和狀態(tài),以將它們與預(yù)期狀態(tài)進(jìn)行比較瑞妇。

要求

UI測(cè)試取決于服務(wù)和API稿静,不僅在開發(fā)工具中,而且在操作系統(tǒng)平臺(tái)上辕狰。你需要Xcode 7改备,macOS 10.11和iOS 9(或更高版本)。UI測(cè)試保護(hù)隱私:

1.iOS設(shè)備需要啟用進(jìn)行開發(fā)并連接到受信任的主機(jī)蔓倍。

2.macOS需要授予特殊Xcode Helper應(yīng)用程序的權(quán)限悬钳。當(dāng)您首次使用UI測(cè)試時(shí),系統(tǒng)會(huì)自動(dòng)提示你偶翅。

iOS設(shè)備需要啟用進(jìn)行開發(fā)并連接到受信任的主機(jī)默勾。macOS需要授予一個(gè)特殊的Xcode Helper應(yīng)用程序的權(quán)限(第一次使用時(shí)自動(dòng)提示)。

概念和APIs

UI測(cè)試從根本上與單元測(cè)試不同聚谁。單元測(cè)試使你能夠在應(yīng)用程序的范圍內(nèi)工作母剥,并允許您通過完全訪問應(yīng)用程序的變量和狀態(tài)來執(zhí)行功能和方法。UI測(cè)試以與用戶無需訪問應(yīng)用程序的內(nèi)部方法形导,函數(shù)和變量的方式相同的方式練習(xí)您的應(yīng)用程序的UI环疼。這使您的測(cè)試能夠以與用戶相同的方式查看應(yīng)用程序,從而暴露用戶遇到的UI問題朵耕。

你的測(cè)試代碼作為一個(gè)單獨(dú)的進(jìn)程運(yùn)行炫隶,合成應(yīng)用程序中的UI響應(yīng)的事件。

APIs

UI測(cè)試基于三個(gè)新類的實(shí)現(xiàn):

1.XCUIApplication

2.XCUIElement

3.XCUIElementQuery

開始使用UI錄制

從UI記錄開始阎曹。它將源代碼生成為可以編輯以構(gòu)建測(cè)試或播放特定使用場(chǎng)景的測(cè)試實(shí)現(xiàn)文件伪阶。UI記錄對(duì)于探索新的UI或?qū)W習(xí)如何編寫UI測(cè)試序列也很有用。操作的基本順序是:

1.使用測(cè)試導(dǎo)航器芬膝,創(chuàng)建UI測(cè)試目標(biāo)望门。

2.在創(chuàng)建的模板文件中,將光標(biāo)置于測(cè)試函數(shù)中锰霜。

3.開始UI錄制筹误。
應(yīng)用程序啟動(dòng)并運(yùn)行。練習(xí)應(yīng)用程序執(zhí)行一系列UI操作癣缅。Xcode將動(dòng)作捕獲到函數(shù)主體中的源中厨剪。

4.完成要測(cè)試的操作后哄酝,停止UI記錄。

5.向源中添加XCTest斷言祷膳。

編寫UI測(cè)試

API測(cè)試可以同時(shí)具有功能和性能方面陶衅,UI測(cè)試也可以。UI測(cè)試在應(yīng)用程序的表面空間操作直晨,并傾向于將許多低級(jí)功能集成到用戶看到的呈現(xiàn)和響應(yīng)中搀军。

UI測(cè)試從根本上操作事件和響應(yīng)的水平。

1.查詢查找元素勇皇。

2.知道元素的預(yù)期行為作為參考罩句。

3.點(diǎn)擊或單擊元素以引出響應(yīng)。

4.測(cè)量響應(yīng)與通過/失敗結(jié)果的預(yù)期匹配或不匹配敛摘。

使用XCTest創(chuàng)建UI測(cè)試是與創(chuàng)建單元測(cè)試相同的編程模型的擴(kuò)展门烂。類似的操作和編程方法被總體使用,給出了UI測(cè)試API的基本概念以及它們?nèi)绾卧?a target="_blank" rel="nofollow">用戶界面測(cè)試中描述的操作的差異兄淫。在測(cè)試類結(jié)構(gòu)中屯远,所提供的setUp方法包括setUp與單元測(cè)試類中的兩個(gè)差異。

- (void)setUp {
[super setUp];

// Put setup code here捕虽。在調(diào)用類中的每個(gè)測(cè)試方法之前調(diào)用此方法慨丐。

self.continueAfterFailure = NO;
[[[XCUIApplication alloc] init] launch];
}}

self.continueAfterFailure設(shè)置NO為默認(rèn)值。這通常是正確的配置薯鳍,因?yàn)閁I測(cè)試方法中的每個(gè)步驟往往取決于前一個(gè)步驟的成功; 如果一個(gè)步驟失敗咖气,所有以下測(cè)試也會(huì)失敗挨措。

方法的另一個(gè)補(bǔ)充setUp包括創(chuàng)建一個(gè)實(shí)例XCUIApplication并啟動(dòng)它挖滤。UI測(cè)試必須啟動(dòng)他們測(cè)試setUp的應(yīng)用程序,并且由于在每個(gè)測(cè)試方法之前運(yùn)行浅役,這確保為每個(gè)測(cè)試方法啟動(dòng)應(yīng)用程序斩松。

編寫UI測(cè)試方法時(shí),應(yīng)使用UI記錄功能為測(cè)試創(chuàng)建一組基本步驟觉既。然后惧盹,為了你的目的編輯此基本序列,使用XCTest斷言提供與單元測(cè)試一樣的通過或失敗結(jié)果瞪讼。UI測(cè)試具有功能和性能方面钧椰,就像單元測(cè)試一樣。

用于正確性的UI測(cè)試的一般模式如下:

1.使用XCUIElementQuery查找XCUIElement符欠。
2.合成事件并將其發(fā)送到XCUIElement嫡霞。
3.使用斷言將XCUIElement的狀態(tài)與預(yù)期的參考狀態(tài)進(jìn)行比較。

要構(gòu)建性能的UI測(cè)試希柿,請(qǐng)將可重復(fù)的UI序列步驟measureBlock包含在編寫性能測(cè)試中看到的結(jié)構(gòu)中诊沪。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末养筒,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子端姚,更是在濱河造成了極大的恐慌晕粪,老刑警劉巖,帶你破解...
    沈念sama閱讀 211,194評(píng)論 6 490
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件渐裸,死亡現(xiàn)場(chǎng)離奇詭異巫湘,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)昏鹃,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,058評(píng)論 2 385
  • 文/潘曉璐 我一進(jìn)店門剩膘,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人盆顾,你說我怎么就攤上這事怠褐。” “怎么了您宪?”我有些...
    開封第一講書人閱讀 156,780評(píng)論 0 346
  • 文/不壞的土叔 我叫張陵奈懒,是天一觀的道長。 經(jīng)常有香客問我宪巨,道長磷杏,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 56,388評(píng)論 1 283
  • 正文 為了忘掉前任捏卓,我火速辦了婚禮极祸,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘怠晴。我一直安慰自己遥金,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,430評(píng)論 5 384
  • 文/花漫 我一把揭開白布蒜田。 她就那樣靜靜地躺著稿械,像睡著了一般。 火紅的嫁衣襯著肌膚如雪冲粤。 梳的紋絲不亂的頭發(fā)上美莫,一...
    開封第一講書人閱讀 49,764評(píng)論 1 290
  • 那天,我揣著相機(jī)與錄音梯捕,去河邊找鬼厢呵。 笑死,一個(gè)胖子當(dāng)著我的面吹牛傀顾,可吹牛的內(nèi)容都是我干的襟铭。 我是一名探鬼主播,決...
    沈念sama閱讀 38,907評(píng)論 3 406
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼蝌矛!你這毒婦竟也來了道批?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 37,679評(píng)論 0 266
  • 序言:老撾萬榮一對(duì)情侶失蹤入撒,失蹤者是張志新(化名)和其女友劉穎隆豹,沒想到半個(gè)月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體茅逮,經(jīng)...
    沈念sama閱讀 44,122評(píng)論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡璃赡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,459評(píng)論 2 325
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了献雅。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片碉考。...
    茶點(diǎn)故事閱讀 38,605評(píng)論 1 340
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖挺身,靈堂內(nèi)的尸體忽然破棺而出侯谁,到底是詐尸還是另有隱情,我是刑警寧澤章钾,帶...
    沈念sama閱讀 34,270評(píng)論 4 329
  • 正文 年R本政府宣布墙贱,位于F島的核電站,受9級(jí)特大地震影響贱傀,放射性物質(zhì)發(fā)生泄漏惨撇。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,867評(píng)論 3 312
  • 文/蒙蒙 一府寒、第九天 我趴在偏房一處隱蔽的房頂上張望魁衙。 院中可真熱鬧,春花似錦株搔、人聲如沸剖淀。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,734評(píng)論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽祷蝌。三九已至,卻和暖如春帆卓,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背米丘。 一陣腳步聲響...
    開封第一講書人閱讀 31,961評(píng)論 1 265
  • 我被黑心中介騙來泰國打工剑令, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人拄查。 一個(gè)月前我還...
    沈念sama閱讀 46,297評(píng)論 2 360
  • 正文 我出身青樓吁津,卻偏偏與公主長得像,于是被迫代替她去往敵國和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子碍脏,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,472評(píng)論 2 348

推薦閱讀更多精彩內(nèi)容