วันนี้ไปร่วมงาน GDG DevFest Bangkok 2017
มี session ที่น่าสนใจเยอะเลยแบ่งออกเป็น 3 ห้อง
ดังนั้นก็ต้องเลือกเข้า session ในห้องใดห้องหนึ่งไปเลย
โดย session แรกที่ได้เข้าไปคือ One Espresso with Kotlin, please
เป็นการแนะนำและทำ workshop เกี่ยวกับ
การเขียน UI Test ของ Android app ด้วย Espresso
ที่น่าสนใจคือ เขียนด้วยภาษา Kotlin
แต่ที่น่าสนใจกว่าคือ การออกแบบ DSL (Domain Specific Language) สำหรับการทดสอบ
ซึ่งทำให้ชุดการทดสอบอ่านง่าย เข้าใจง่าย มันสวยนะ
มาดูกันนิดหน่อย
หน้าขอการทำงานของ app ใน workshop เป็นดังนี้
เริ่มด้วยชุดการทดสอบ UI test ด้วย Kotlin
ไม่ได้แตกต่างจากภาษา Java มากนัก แค่สั้นลงนิดเดียว เขียน code ได้ดังนี้ [gist id="e1bf46a2f1689831d8a96600c4d37b5f" file="1.kt"]ถ้าเขียนแบบนี้ ดูจะง่ายไปเกินไป ยังไม่ได้ใช้ความสามารถของภาษา Kotlin กันเลย !! มาดูสิ่งที่สนุกสำหรับ session นี้คือ การออกแบบ DSL สำหรับใช้ในการทดสอบ
สิ่งที่ต้องทำคือ การออกแบบ DSL
ใน workshop พาออกแบบง่าย ๆ ดังนี้ [gist id="e1bf46a2f1689831d8a96600c4d37b5f" file="2.kt"] คำอธิบาย ในการ click item ใน list (RecyclerView) ตามตำแหน่งที่ต้องการ สิ่งที่ต้องการคือ สร้าง class KView ขึ้นมา ต้องกำหนด id ของ RecyclerView จากนั้นจะเรียก method perform() เพื่อสั่งให้ทำการ click item ตามตำแหน่งที่ต้องการ เหมือนจะง่าย แต่ไม่ง่ายเลย เนื่องจากใน workshop นำความสามารถของ Kotlin มาใช้งาน เช่น- extension เพื่อเพิ่ม method perform() เข้ามาใน class KView
- infix เพื่อให้สามารถเรียกใช้งาน method perform() แบบสวย ๆ ไม่ต้องใช้ dot(.)
ว่าง ๆ เลยลองนั่งคิดว่า ไม่ต้อง generic ขนาดนี้ก็ได้ (มือใหม่หัดมั่ว)
จึงลองนำแนวคิด Page Object มาลองใช้งาน ทำการออกแบบ DSL สำหรับการทดสอบใหม่นิดหน่อย เป็นดังนี้ [gist id="e1bf46a2f1689831d8a96600c4d37b5f" file="3.kt"] ดูไม่ค่อยดีเท่าไร แต่ก็พอทน !! เมื่อออกแบบแล้ว ถึงเวลาสร้างมันขึ้นมากันแล้ว เริ่มจากการสร้าง class ProductPage ขึ้นมา ทำหน้าที่สำหรับการเลือก product ในตำแหน่งที่ต้องการ ดังนี้ [gist id="e1bf46a2f1689831d8a96600c4d37b5f" file="ProductPage.kt"] จากนั้นสร้างส่วนของการตรวจสอบข้อมูลในหน้า Product Detail ตั้งชื่อว่า class ProductDetailPage ดังนี้ [gist id="e1bf46a2f1689831d8a96600c4d37b5f" file="ProductDetailPage.kt"] เพียงเท่านี้ก็ได้ชุดการทดสอบแบบสวย ๆ แล้ว !!ปล. ผมเขียนภาษา Kotlin ไม่เป็นนะครับ แค่ลองมั่ว ๆ ไปเท่านั้นเอง
ข้อเสียของ session นี้คือ
การ setup project สำหรับคนเริ่มต้นใหม่ ก็ download library และ build นานหน่อย บวกกับระบบ WIFI ก็เข้าได้บ้างไม่ได้บ้าง ทำให้เหนื่อยหน่อย ส่วนเรื่องของเนื้อหาก็ถือว่า ยังไม่เยอะเท่าไร แต่ได้แนวทางและแรงบันดาลใจเยอะเลยโดย speaker ที่มาจาก Agoda บอกว่า ในวันจันทร์นี้จะเปิดเผย source code ชุดสร้างการทดสอบ DSL ด้วย Kotlin ชื่อว่า KaKao ให้ด้วยนะ ใจดีมาก ๆ ไว้วันจันทร์มาลองกัน !!ขอให้สนุกกับการ coding นะครับ