กรณีทดสอบ Xcode UI, XCtestcase พร้อมตัวควบคุมจำนวนมากใน UINavigationController

การเขียน UI Testcase สำหรับหน้าจอแรกดูเหมือนจะง่ายมาก

ดังที่แสดงด้านล่าง

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()

    }

แต่จะเขียนกรณีทดสอบได้อย่างไร โดยที่ตัวควบคุมการนำทางตัวหนึ่งทริกเกอร์หน้าจออื่นดังที่แสดงด้านล่าง

ตัวควบคุมการนำทาง -> UIViewController1 -> UIViewcontroller2 .....UIViewController5

ในการทดสอบ UIViewController5 ฉันจะต้องเขียนโค้ดหลายบรรทัดซึ่งจะรวมตรรกะต่อไปนี้

1) เปิดแอป

2) เปิดตัว Controller1 ดำเนินกิจกรรมเพื่อเปิด Controller2

3) ทำซ้ำขั้นตอนที่ 2 จนกระทั่งถึง Controller5

ฉันเชื่อว่ากรณีทดสอบ UI ควรเรียบง่ายและไม่ควรใช้เวลา

แนวทางใดควรเป็นวิธีที่ดีที่สุดในกรณีนี้ ในการรันกรณีทดสอบสำหรับ Controller5 นั้นจะต้องดำเนินการเหตุการณ์ทั้งหมดก่อนหน้านั้น


person NNikN    schedule 30.04.2018    source แหล่งที่มา
comment
คุณจะต้องยอมรับการประนีประนอมด้านความเร็วเพื่อใช้ประโยชน์จากความสามารถในการทดสอบ UI ของ XCTest ได้อย่างเต็มที่ นั่นคือค่าใช้จ่ายในการทดสอบในระดับ UI เพื่อการทดสอบที่รวดเร็วขึ้น ให้ใช้การทดสอบการรวมหน่วย/ส่วนประกอบ/อื่นๆ การทดสอบ UI ทำได้ช้า แต่ก็มีความน่าเชื่อถือมากกว่าและใกล้เคียงกับประสบการณ์ของผู้ใช้ปลายทางมากกว่า นั่นคือคุณค่าของมัน ไม่ใช่อยู่ที่ความเร็ว   -  person Oletha    schedule 30.04.2018
comment
อาจซ้ำกันของ เป็นไปได้หรือไม่ที่จะเปิดหน้าจอโดยตรงใน XCUITest?   -  person lagoman    schedule 01.05.2018