วันนี้ไปร่วมงาน 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 ได้ดังนี้

ถ้าเขียนแบบนี้ ดูจะง่ายไปเกินไป
ยังไม่ได้ใช้ความสามารถของภาษา Kotlin กันเลย !!

มาดูสิ่งที่สนุกสำหรับ session นี้คือ
การออกแบบ DSL สำหรับใช้ในการทดสอบ

สิ่งที่ต้องทำคือ การออกแบบ DSL

ใน workshop พาออกแบบง่าย ๆ ดังนี้

คำอธิบาย
ในการ click item ใน list (RecyclerView) ตามตำแหน่งที่ต้องการ
สิ่งที่ต้องการคือ สร้าง class KView ขึ้นมา ต้องกำหนด id ของ RecyclerView
จากนั้นจะเรียก method perform()
เพื่อสั่งให้ทำการ click item ตามตำแหน่งที่ต้องการ

เหมือนจะง่าย แต่ไม่ง่ายเลย
เนื่องจากใน workshop นำความสามารถของ Kotlin มาใช้งาน เช่น

  • extension เพื่อเพิ่ม method perform() เข้ามาใน class KView
  • infix เพื่อให้สามารถเรียกใช้งาน method perform() แบบสวย ๆ ไม่ต้องใช้ dot(.)

สามารถเขียน code ใน Helper.kt ได้ดังนี้

ตัวอย่าง source code ของ Workshop อยู่ที่ Github :: Sneaker-app

ว่าง ๆ เลยลองนั่งคิดว่า ไม่ต้อง generic ขนาดนี้ก็ได้ (มือใหม่หัดมั่ว)

จึงลองนำแนวคิด Page Object มาลองใช้งาน
ทำการออกแบบ DSL สำหรับการทดสอบใหม่นิดหน่อย
เป็นดังนี้

ดูไม่ค่อยดีเท่าไร แต่ก็พอทน !!

เมื่อออกแบบแล้ว ถึงเวลาสร้างมันขึ้นมากันแล้ว
เริ่มจากการสร้าง class ProductPage ขึ้นมา
ทำหน้าที่สำหรับการเลือก product ในตำแหน่งที่ต้องการ
ดังนี้

จากนั้นสร้างส่วนของการตรวจสอบข้อมูลในหน้า Product Detail
ตั้งชื่อว่า class ProductDetailPage ดังนี้

เพียงเท่านี้ก็ได้ชุดการทดสอบแบบสวย ๆ แล้ว !!

ปล. ผมเขียนภาษา Kotlin ไม่เป็นนะครับ แค่ลองมั่ว ๆ ไปเท่านั้นเอง

ข้อเสียของ session นี้คือ

การ setup project สำหรับคนเริ่มต้นใหม่ ก็ download library และ build นานหน่อย
บวกกับระบบ WIFI ก็เข้าได้บ้างไม่ได้บ้าง
ทำให้เหนื่อยหน่อย
ส่วนเรื่องของเนื้อหาก็ถือว่า ยังไม่เยอะเท่าไร
แต่ได้แนวทางและแรงบันดาลใจเยอะเลย

โดย speaker ที่มาจาก Agoda บอกว่า 
ในวันจันทร์นี้จะเปิดเผย source code ชุดสร้างการทดสอบ DSL ด้วย Kotlin ชื่อว่า KaKao ให้ด้วยนะ
ใจดีมาก ๆ
ไว้วันจันทร์มาลองกัน !!

ขอให้สนุกกับการ coding นะครับ