Kasus Uji Xcode UI., XCtestcase dengan banyak pengontrol di UINavigationController

Menulis Testcase UI untuk layar pertama tampaknya sangat sederhana.

Seperti yang ditunjukkan di bawah ini.

func testExample() {

        let app = XCUIApplication()
        let textField = app.otherElements.containing(.navigationBar, identifier:"id").children(matching: .other).element.children(matching: .other).element.children(matching: .other).element.children(matching: .textField).element
        textField.tap()
        textField.tap()
        app.navigationBars["id"].buttons["Done"].tap()

    }

Namun cara menulis kasus uji, di mana satu pengontrol navigasi memicu layar lain seperti yang ditunjukkan di bawah ini.

Pengontrol Navigasi -> UIViewController1 -> UIViewcontroller2 .....UIViewController5

Untuk menguji UIViewController5, saya harus menulis baris kode besar-besaran yang mencakup logika berikut

1) Luncurkan Aplikasi.

2) Luncurkan Controller1, lakukan acara untuk Meluncurkan Controller2

3) Ulangi langkah 2 hingga mencapai Controller5.

Saya yakin kasus uji UI harus sederhana dan tidak memakan waktu.

Pendekatan apa yang ideal dalam kasus ini, karena untuk menjalankan test case untuk Controller5, ia harus mengeksekusi semua event sebelumnya?


person NNikN    schedule 30.04.2018    source sumber
comment
Anda harus menerima beberapa kompromi pada kecepatan untuk memanfaatkan sepenuhnya kemampuan pengujian UI XCTest. Itulah biaya pengujian di tingkat UI. Untuk pengujian yang lebih cepat, gunakan pengujian integrasi unit/komponen/lainnya. Pengujian UI memang lambat, namun juga lebih autentik dan mendekati pengalaman pengguna akhir - di situlah nilainya, bukan kecepatannya.   -  person Oletha    schedule 30.04.2018
comment
Kemungkinan duplikat Apakah mungkin untuk membuka layar secara langsung di Tes XCUIT?   -  person lagoman    schedule 01.05.2018