除了在開發(fā)期間交互運(yùn)行測(cè)試外变汪,還可以利用使用服務(wù)器自動(dòng)運(yùn)行測(cè)試仪吧。
基于服務(wù)器的持續(xù)集成測(cè)試
Xcode測(cè)試功能啊送,以交互方式使用吟宦,確保您的代碼相對(duì)于其指定的要求保持正常篮洁,并確保開發(fā)的錯(cuò)誤很容易找到和修復(fù)。一套快速運(yùn)行的功能測(cè)試證明你的工作殃姓,你要做什么袁波,并確保堅(jiān)實(shí)的應(yīng)用基礎(chǔ),你可以建立在高效和自信蜗侈。
也就是說篷牌,成功的開發(fā)項(xiàng)目往往超越單一開發(fā)人員實(shí)施和維護(hù)的范圍。像源代碼管理一樣踏幻,服務(wù)器上的自動(dòng)測(cè)試通過允許您的開發(fā)工作順利枷颊,高效地?cái)U(kuò)展到團(tuán)隊(duì)的需求來提供好處。
以下是使用基于服務(wù)器的測(cè)試的一些好處:
1.使用服務(wù)器進(jìn)行脫機(jī)構(gòu)建和測(cè)試该面,可以使您的開發(fā)系統(tǒng)無需執(zhí)行和調(diào)試夭苗,特別是在整套測(cè)試需要很長時(shí)間運(yùn)行的情況下。
2.開發(fā)團(tuán)隊(duì)的所有成員通過使用相同的方案在服務(wù)器上運(yùn)行相同的測(cè)試隔缀,從而提高測(cè)試一致性题造。服務(wù)器還使構(gòu)建產(chǎn)品可用于整個(gè)團(tuán)隊(duì),就像構(gòu)建和測(cè)試報(bào)告一樣猾瘸。
3.您可以根據(jù)項(xiàng)目需求和團(tuán)隊(duì)需求調(diào)整計(jì)劃界赔。例如丢习,測(cè)試運(yùn)行可以在團(tuán)隊(duì)的任何成員向源管理系統(tǒng)提交新工作或在設(shè)置的時(shí)間定期執(zhí)行時(shí)開始。也可以在需要時(shí)手動(dòng)啟動(dòng)測(cè)試運(yùn)行淮悼。
4.服務(wù)器每次運(yùn)行測(cè)試時(shí)間咐低,以完全相同的方式。服務(wù)器的報(bào)告功能可以幫助您和您的團(tuán)隊(duì)隨時(shí)了解構(gòu)建問題袜腥,構(gòu)建警告和測(cè)試解決方案的圖片见擦。
5.您的項(xiàng)目可以自動(dòng)地以更經(jīng)濟(jì)的方式在更多的目的地上測(cè)試,而不是手動(dòng)運(yùn)行的測(cè)試系統(tǒng)羹令。例如锡宋,您可以將任意數(shù)量的iOS設(shè)備連接到服務(wù)器,并且使用單個(gè)配置特恬,系統(tǒng)可以在所有這些設(shè)備以及多個(gè)版本的Simulator中構(gòu)建和測(cè)試庫,應(yīng)用程序和測(cè)試徐钠。
命令行測(cè)試
使用Xcode命令行工具癌刽,您可以對(duì)項(xiàng)目的構(gòu)建和測(cè)試進(jìn)行腳本化和自動(dòng)化。使用此功能可利用現(xiàn)有的構(gòu)建自動(dòng)化系統(tǒng)尝丐。
使用xcodebuild運(yùn)行測(cè)試
該xcodebuild命令行工具驅(qū)動(dòng)測(cè)試显拜,就像Xcode的IDE。使用xcodebuild操作運(yùn)行test并使用-destination參數(shù)指定不同的目標(biāo)爹袁。例如远荠,要在本地macOS“My Mac 64 Bit”上測(cè)試MyApp,請(qǐng)使用此命令指定目標(biāo)和體系結(jié)構(gòu):
> xcodebuild test -project MyAppProject.xcodeproj -scheme MyApp -destination'platform = OS X失息,arch = x86_64'
如果您已插入支持開發(fā)的設(shè)備譬淳,則可以按名稱或ID調(diào)用它們。例如盹兢,如果您連接了名為“開發(fā)iPod touch”的iPod touch邻梆,并且要測(cè)試您的代碼,請(qǐng)使用以下命令:
> xcodebuild test -project MyAppProject.xcodeproj -scheme MyApp -destination'platform = iOS绎秒,name = Development iPod touch'
測(cè)試也可以在模擬器中運(yùn)行浦妄。使用模擬器輕松地定位不同的外形規(guī)格,操作系統(tǒng)和操作系統(tǒng)版本见芹。模擬器目標(biāo)可以通過名稱或ID指定剂娄。例如:
> xcodebuild test -project MyAppProject.xcodeproj -scheme MyApp -destination'platform = Simulator,name = iPhone玄呛,OS = 8.1'
該-destination參數(shù)可以鏈接在一起阅懦,讓你只發(fā)出一個(gè)命令跨越的目標(biāo)執(zhí)行整合為指定的共享方案。例如把鉴,以下命令將前三個(gè)示例鏈接到一個(gè)命令中:
> xcodebuild test -project MyAppProject.xcodeproj -scheme MyApp
-destination'platform = OS X故黑,arch = x86_64'
-destination'platform = iOS儿咱,name =開發(fā)iPod touch'
-destination'platform = Simulator,name = iPhone场晶,OS = 9.0'
如果任何測(cè)試失敗混埠,xcodebuild則返回非零退出代碼。
有關(guān)更多信息诗轻,請(qǐng)參閱如何在命令行中在OS X和iOS中運(yùn)行單元測(cè)試钳宪?在從Xcode中常見問題的命令行構(gòu)建。您還可以使用以下xcodebuild命令獲取該命令的完整使用信息:
> man xcodebuild
使用ssh與xcodebuild
xcodebuild使用ssh(或從啟動(dòng)守護(hù)程序)從遠(yuǎn)程登錄調(diào)用失敗扳炬,除非在主機(jī)上創(chuàng)建正確的會(huì)話環(huán)境吏颖。
當(dāng)您以用戶身份以交互方式登錄到MacOS系統(tǒng)時(shí),將創(chuàng)建“Aqua會(huì)話”環(huán)境恨樟。Aqua會(huì)話初始化macOS交互式環(huán)境的基礎(chǔ)設(shè)施; 它們是必需的半醉,以便能夠運(yùn)行macOS應(yīng)用程序。更具體地說劝术,使用UI框架(AppKit或UIKit)的代碼需要在Aqua會(huì)話中運(yùn)行缩多。由于這個(gè)要求,在MacOS上進(jìn)行測(cè)試(以及在模擬器上進(jìn)行測(cè)試养晋,本身就是一個(gè)macOS應(yīng)用程序)需要一個(gè)Aqua會(huì)話衬吆。
默認(rèn)情況下,當(dāng)您使用ssh登錄到?jīng)]有活動(dòng)用戶會(huì)話運(yùn)行的macOS系統(tǒng)時(shí)绳泉,將創(chuàng)建命令行會(huì)話逊抡。要確保為ssh登錄創(chuàng)建Aqua會(huì)話,您必須有一個(gè)用戶在遠(yuǎn)程MacOS主機(jī)系統(tǒng)上登錄零酪。在遠(yuǎn)程系統(tǒng)上運(yùn)行的用戶的存在會(huì)強(qiáng)制Aqua會(huì)話進(jìn)行ssh登錄冒嫡。
一旦用戶在主機(jī)系統(tǒng)上運(yùn)行,xcodebuild從ssh登錄運(yùn)行適用于所有類型的測(cè)試四苇。例如灯谣,以下Terminal應(yīng)用程序命令運(yùn)行在開發(fā)系統(tǒng)主機(jī)上為“MyApp”定義的測(cè)試ssh:
> ssh localhost
> cd?/ Development / MyAppProject_Folder
> xcodebuild test -project MyApp.xcodeproj -scheme MyApp -destination'platform = Simulator,name = iPhone 6'
對(duì)于需要更深入了解ssh蛔琅,啟動(dòng)惡魔和啟動(dòng)代理以及它們?nèi)绾闻c系統(tǒng)交互的用戶胎许,請(qǐng)參閱技術(shù)說明“ 守護(hù)程序和代理和守護(hù)程序和服務(wù)編程指南”。
使用Xcode Server和連續(xù)集成
Xcode通過Xcode Server支持完全集成的基于服務(wù)器的持續(xù)集成工作流程罗售。MacOS Server中提供的Xcode Server可自動(dòng)化構(gòu)建辜窑,分析,測(cè)試和歸檔應(yīng)用程序的集成過程寨躁。使用Xcode Server和持續(xù)集成工作流程被設(shè)計(jì)為對(duì)您的交互式開發(fā)工作無縫和透明穆碎。
要了解有關(guān)設(shè)置和使用Xcode Server的所有信息,請(qǐng)參閱Xcode Server和Continuous Integration Guide职恳。