2016-10-19 40 views
0

我負責我公司的iOS自動化,我正在XCTest中使用Swift。我的公司正在轉換爲Swift 3,並在此期間將我的測試轉換爲Swift 2.3,直到完成轉換。自動化已經放慢到不可接受的速度。非常糟糕,如果我們再次開始並選擇框架XCTest將被取消資格。在這個過渡性的快速轉換中,我的測試時間增加了近三分之一。試圖揭開什麼問題是這個鏈接是有幫助的: Swift 3 Compile Time Incredibly SlowSwift 2.3中的XCTest令人痛苦的緩慢

我們應用final所有類模型來處理其獲得我們每個測試6秒懶瓦爾!不幸的是,不把它恢復到原來的速度:(

我們這些在移動自動化領域使用知道作爲NSPredicate建議@Joe Masilotti是等待元素 https://stackoverflow.com/users/384110/joe-masilotti

的最佳方式我用一個包含let existsPredicate = NSPredicate(format: "exists == true")的自定義func waitForElement()進行了一個測試,同樣的測試現在又增加了3秒!所以總共9秒很長,但不幸的是這仍然沒有恢復到原來的速度。關於swift 2.3已經變慢的話

我要試着只轉換測試目標迅速3,看看是否有幫助。我的理論是,Xcode 8針對swift 3進行了優化,而不是迅速2.3

我的問題是,是否有另一種方法在不會減慢測試速度的擴展中編寫NSpredicate/waitForElement或hittable方法?

+1

你確定這不是因爲你更新到Xcode 8後,你在運行iOS 10模擬器嗎?根據我的經驗,iOS 10模擬器運行速度比iOS 9慢很多。 – Oletha

+0

有趣的我會嘗試的,是的,我正在運行一個10模擬。 – JJacquet

+0

從OS 10模擬器中的120秒鐘到在OS 9模擬器中的55秒鐘的測試結果。謝謝你的提示。不相信蘋果發佈了Swift 3。如果代碼變慢是他們的目標,那麼他們達到了一個里程碑。恭喜Apple讓我知道你是否需要QA。 – JJacquet

回答

1

iOS 10模擬器比iOS 9模擬器的資源密集度要高得多。

如果您想更快地運行測試,請切換到iOS 9模擬器,但是您需要忍受較慢的測試,以便測試當前版本的iOS。

確保你有一個高規格的Mac作爲你的CI服務器 - 人們常常犯了使用基本規格的Mac Mini的錯誤,這在運行測試中速度非常慢。更多的力量可以幫助很多。