前言
iOS自動化測試一直不如Android的方便艘包,最近沒事看簡單看了下,分別基本使用了一下自動化框架Quick和KIF菲嘴,做一些簡單的介紹爬虱。
安裝
-
安裝前設(shè)置
在安裝之前將工程中的Defines Module設(shè)為YES,如下圖:
- 使用cocoapods安裝Quick和Nimble秉溉。在Podfile中添加pod命令力惯,如下通過def xxx end來包裹pod命令,這樣該def可以被用于多個(gè)相同的target召嘶,如UnitTest和UITest
def testing_pods
pod 'Quick'
pod 'Nimble'
end
target 'DemoTests' do
testing_pods
end
Quick在Xcode9上Swift4貌似支持的不好父晶,需將Quick和Nimble的版本手動配置為Swift3.2,后續(xù)官方可能會優(yōu)化對Swift4的支持
# 手動配置版本到swift 3.2
post_install do |installer|
installer.pods_project.targets.each do |target|
if [target.name](http://target.name) == 'Quick' || [target.name](http://target.name) == 'Nimble'
print "Changing Quick swift version to 3.2\n"
target.build_configurations.each do |config|
config.build_settings['SWIFT_VERSION'] = '3.2'
end
end
end
end
pod install安裝即可使用
注
:可以安裝Quick模板弄跌,這樣可以快速的新建Quick測試文件甲喝,具體步驟查看GitHub官方文檔,但是安裝好了總覺得Xcode變得很慢铛只,有可能是需要安裝包管理的原因埠胖,對Xcode9支持的也不好,所以其實(shí)最好不安裝模板淳玩,就幾行代碼直撤,可以Copy到一個(gè)地方,創(chuàng)建的時(shí)候Paste過來即可蜕着。
出現(xiàn)No Such Module ‘Quick’問題解決
這個(gè)問題也得歸結(jié)于目前對Xcode9 Swift4支持的不好谋竖,可以根據(jù)GitHub的issue #729(closed里面)進(jìn)行嘗試解決红柱,不然編譯通不過,對于入門者沒有自動提示也是呵呵噠蓖乘。issue #729主要 解決方法總結(jié)為:
手動將Quick版本配置到Swift3.2锤悄,上述Podfile中已提及
注意使用最新的Quick版本,即默認(rèn)的master分支最新源碼
Pod install后再次檢查嘉抒,將工程中的Defines Module和pod工程中的Defines Module設(shè)置為YES
framework search paths不配置任何東西
還有可以嘗試按照GitHub官方Document里面的TroublesShooting(常見安裝問題)進(jìn)行解決零聚,其總結(jié)為:
清掉Xcode DriveData數(shù)據(jù)
通過Manage Scheme將Quick、Nimble些侍、Pods-ProjectNameTests勾選上隶症,讓他們show出來,然后分別選中他們各編譯一次娩梨,最后返回你的工程進(jìn)行測試
我的做了以上嘗試當(dāng)天其實(shí)還是一直顯示No Such Module ‘Quick’沿腰,然后就沒管它去看了KIF UI 測試框架,結(jié)果第二天來就可以找到了狈定,確實(shí)這個(gè)我是沒啥好說的颂龙,肯定的是Quick對Xcode9/Swift4的支持不夠好,還有可能是Xcode本身的indexing系統(tǒng)在某些時(shí)候不理想(Xcode9當(dāng)然是目前indexing最好的版本纽什,其本身用Swift重構(gòu)后解決了以前的太多不方便)
Test文件中不能引用主工程類問題解決
Test文件中找不到主工程中的類措嵌,如測試其ViewController,需要將ViewController作為實(shí)例變量芦缰。嘗試了幾種方法企巢,如import ProjectName,將Target設(shè)置到Test
解決方法让蕾,參照官方的XCTest的寫法浪规,這樣引入@testable import ProjectName
即可
寫在結(jié)尾
對iOS自動化測試研究不深,平時(shí)也很少用到探孝,希望能夠有更好的測試框架和更簡易的教程出來笋婿。
附Demo地址