Swift UITest踩坑記錄

週一新公司入職,面試時考察的OC,進來發現項目要用swift寫。於是開始學習swift。項目組安排項目任務,大體代碼有個大牛已經寫差不多了。小組接手先從寫測試開始,順路磨練swift技術。

記錄一下今天碰到的UITest的坑:

1,彈出 Timestamped Event Matching Error: Failed to find matching element

當進行代碼錄製時(很多同學反應代碼錄製那個按鈕是灰的,記得把光標點到testXXX的函數裏面,就會變紅啦,這個問題你去google,百度是不會有答案的,stackoverflow很多這個問題都沒有答案,原來這麼簡單),點擊沒有identifier的UISwitch時,會出現這個問題。網上有說添加如下代碼的:

        tSwitch.isAccessibilityElement = true

        tSwitch.accessibilityIdentifier = "saveAccountSwitch"

我添加後,清空,重啓,關了開開了關都不好用。組裏TL跳過錄制,弄了個硬招來獲取這個開關:

  let app = XCUIApplication()

  app.switches.element(boundBy: 0)

親測,OK。

2,測試UISwitch開關的值是否是關閉

這個問題很噁心,app.switches.element(boundBy: 0).value包裝的值竟然是字符串的0,害得我好找。代碼如下:

if let switchValue = app.switches.element(boundBy: 0).value {
            if let switchIntValue = switchValue as?  String{
                 XCTAssertEqual(switchIntValue, "0", "Save switch default value is not off")
            }else {
                 XCTFail("Save switch value unnormal")
            }
        }else {
            XCTFail("Save switch do not have value may be it's not exist")

        }

3,順便學習了?!

as(有保障下類型轉換)  as?(轉換成可空類型) as!(強轉可崩)  以及 if let (判空安全解) ,value!(強解),Type!(自動強解類型) 的優勢及區別。 ??是三目運算符的簡寫形式。

總結:項目的壓力+N多的資料+朋友支持學習還是蠻快的。swift類型安全的真是很舒服,完全不會再有寫完了擔心判斷不周,遺漏空值的感覺了。添加了有限的語法符號,最大化表達能力,而且真的代碼邏輯順暢多了。唯一的遺憾是聽說指針不見了,作爲愛C族感到惋惜。





發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章