用基類編寫幹XCUITest測試

來源:互聯網
上載者:User

標籤:clone   arguments   tca   open   on()   功能   執行個體   可伸縮   記錄   

在我們以前的職位在設定XCUITest架構時,我們用Xcode 10建立並運行了一個樣本XCUITest。Apple的XCUITest架構使我們能夠記錄基本的使用者行程,從而開始使用XCUITest,但是所記錄的測試不具有延展性和可重用性。我們必須努力提高XCUITest的可讀性、延展性、可維護性和可重用性。

按照上一篇文章中提到的方法,我們可以添加更多的UI測試,但是會有大量的代碼重複,這會使我們的UI測試很難維護和修複。編寫自動化測試非常容易,但隨著項目的規模和複雜性的增加,編寫可靠的測試更加困難。有各種測試方法和測試模式可用於使測試具有延展性。在這篇文章中,我們將介紹如何通過抽象基類中常見的SWIFT代碼使XCUITest測試變得健壯。

為XCUITest測試建立一個基類
大多數測試架構使用基類抽象測試類別的公用功能。簡而言之,基類是為測試類別提供公用功能的超類。在我們XCUITest101Xcode項目,我們有一個ui測試類別。XCUITest101UITests.swift在一個類中使用所有的方法,比如安裝、解壓縮和測試方法。如果我們想要添加新的XCUITest測試,那麼我們必須重複每個測試類別的設定和拆卸方法。顯然,這將在我們的IOS項目中建立大量重複的代碼,這使得以後很難維護,並且可能會延長您在行動裝置雲上的測試執行時間。為了避免這種情況,讓我們從Xcode->File->New->File->Swift File->Next並將檔案命名為XCUITestBase,並確保為該檔案選擇了目標XCUITest101UITest。

這將建立一個新檔案。XCUITestBase.swift在UI測試目標下,我們可以抽象出通用代碼。

通用測試工作流程
現在我們已經為XCUITest建立了基類,我們可以考慮我們可以在基類中包含的常見和重複的代碼。查看我們現有的測試類別XCUITest101UITEST,我們可以在基類中抽象如下內容:

設定和測試方法
的執行個體XCUIApplication()這在以後的測試中可能需要。
這兩個是非常明顯的東西,我們必須抽象化,以便以後再使用。然而,隨著項目和測試套件的增長,將來可能需要抽象更多的通用工作流程。在編寫XCUITest測試時,必須在能夠可靠運行測試的狀態下配置我們的應用程式。蘋果提供了啟動參數和發射環境傳遞給每個測試類別。配置從基類添加啟動參數的能力是有意義的。一個很好的例子是,當我們希望使用啟動參數從乾淨的狀態啟動每個測試時。

XCUIApplication().launchArguments = ["-StartFromCleanState", "YES"]

這是一個啟動參數的例子,但是您可以傳遞由IOS開發人員建立的任何參數或環境。我們可以在基類中配置它,還可以將基類擴充到XCTestCase班級,等級最後,我們XCUITestBase類看起來像這,這個:

現在我們已經建立了基類,接下來的任務是修改我們的測試。XCUITest101UITest到基類的子類,並使用來自超類的常用方法。

重構UI測試以使用基類
為了重構我們的原著XCUITest101UITest,我們可以採取以下幾項行動:

我們不需要記錄測試,所以,首先,讓我們去掉testRecorded()我們班的考試。
接下來,我們可以重新命名我們的測試方法。testRefactored()用更明智的方法。在驗證歡迎訊息時,讓我們將這個測試重新命名為testWelcomeMessage()
我們必須將測試的超類替換為XCTestCase到XCUITestBase這樣我們就可以使用基類中的所有公用工作流程。
替換XCUIApplication()到app從基類。
完成上述步驟後,我們的測試類別將如下所示這,這個:

現在我們的測試類別看起來好多了,更整潔了。通過使用基類,我們將30+行的原始碼減少到了8行。如果使用CMD+U關鍵,你會看到我們的測試仍然通過,沒有任何問題。您可以從調試區,它通常是用CMD+Shift+C(??C)在Xcode 10中輸入鍵。在我們的測試中,當測試在模擬器中運行時,日誌如下所示:

最後,您可以看到測試將斷言歡迎訊息並通過。

你自己試試看
本教程的原始碼可在baseclass支部這裡。您可以自己下載原始碼並在Xcode 10中運行測試。在命令列中,您可以獲得如下原始碼:

$ git clone https://github.com/Shashikant86/XCUITest101
$ cd XCUITest101
$ git checkout baseclass
$ open XCUITest101.xcodeproj/
項目在Xcode 10中開啟後,請按CMD+U運行XCUITest。

結語
在這篇文章中,我們抽象了基類中XCUITest的通用代碼,以避免重複。然而,要使我們的測試具有延展性和真正的可重用性,仍然需要很多改進。我們將在即將發布的文章中將SWIFT最好的測試模式應用於我們的XCUITest。請繼續關注。

用基類編寫幹XCUITest測試

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.