Quantcast
Channel: cc :: somkiat
Viewing all articles
Browse latest Browse all 2029

สวัสดีกับ Android Testing Support Library 1.0

$
0
0

หลังจากงาน Google IO 2017 มีการโชว์ของต่าง ๆ เกี่ยวกับการทดสอบ Android app ตัวอย่างเช่น
  • Multiprocess Espresso
  • Android Test Orchestrator
เป็นความสามารถอยู่ใน Android Testing Support Library (ATSL) 1.0 ซึ่งตอนนี้ได้ปล่อยออกมาให้ใช้งานกันแล้ว ดังนั้นมาดูกันว่ามีความสามารถอื่น ๆ อะไรบ้าง รวมทั้งมาลองใช้งานกันดู

เริ่มด้วย Espresso มีการปรับปรุงเยอะเลย

ทำการปรับ version ใหม่เป็น Espresso 3.0 โดยความสามารถใหม่ ๆ ที่น่าสนใจมากคือ Multiprocess Espresso ทำให้สามารถ run แยก process การทดสอบออกจาก process default ได้ แต่ใช้ได้เฉพาะกับ Android O (API 26) ขึ้นไป ส่วนที่ต่ำกว่าก็ยังทำงานเช่นเดิม ส่วนการเขียน code สำหรับการทดสอบ Android app ด้วย Espresso ยังคงเหมือนเดิม เนื่องจากเป็นการเปลี่ยนแปลงภายในเท่านั้น ซึ่งจะมีประโยชน์มาก ๆ สำหรับ app ที่มีขนาดใหญ่ แน่นอนว่าต้องเขียนชุดการทดสอบด้วย Espresso นะเออ !! การทำงานเป็นดังรูป
ถึงตรงนี้ผมก็ยังไม่รู้ว่ามีประโยชน์อะไรชัดเจน !! เพราะว่ายังไม่เข้าใจมากนัก ดังนั้นมันต้องลองใช้งานดู
เริ่มด้วยต้องเปลี่ยนไปใช้ Google Maven Repository ก่อนนะ และทำการเพิ่ม dependency เป็น Espresso 3.0 ดังนี้ [gist id="15de4dcfbc8360af3f2b1f668d837da0" file="build.gradle"] จากนั้นทำการสร้างไฟล์ AndroidManifest.xml ใน folder /app/src/androidTest เพื่อทำการกำหนดค่าต่าง ๆ ในการทดสอบ app ด้วย Multiprocess Espresso [gist id="15de4dcfbc8360af3f2b1f668d837da0" file="AndroidManifest.xml"] ส่วนการเขียน code ยังคงเหมือนเดิม ตรงนี้นักพัฒนาสบายใจได้

เพิ่ม Grant Permission Rule เข้ามาให้แล้ว

ตั้งแต่ Android M (API 23) ขึ้นมา เปิดให้ app ทำการขอ permission ในขณะ runtime ได้ ดังนั้นในการทดสอบแบบเดิม ถ้าเจอการขอ permission แบบนี้แล้ว การทดสอบ fail แน่ ๆ ดังนั้น Espresso 3.0 จึงได้ทำการเพิ่ม GrantPermissionRule เข้ามา เพื่อยกเลิก dialog ของการขอ permission ในขณะทดสอบออกไป นั่นคือการจำลองว่า ผู้ใช้งานอนุญาตนั่นเอง !!

Android Test Orchestrator (Beta version)

โดยปกติการทดสอบผ่าน AndroidJUnitRunner นั้น จะทำการ run ทุก ๆ testcase ใน process เดียวกัน ดังนั้นทำให้เกิดปัญหามากมายตามมา เช่น
  • หยุดการทดสอบเมื่อเกิดปัญหา
  • มีการ share resource ต่าง ๆ เช่น ข้อมูลและสถานะต่าง ๆ ใน memory
ดังนั้น Android Test Orchestrator จึงมีเป้าหมายเพื่อแยกการทดสอบออกจากกัน ดังนั้นจึงต้องระมัดระวังด้วยว่า app ของเรานั้นมีการ share ข้อมูลต่าง ๆ หรือไม่ มิเช่นนั้นการทดสอบจะพังได้แบบง่าย ๆ การใช้งานต้องสั่งผ่าน command line นะ สามารถดูเพิ่มเติมได้ที่ Android Test Orchestrator แสดงผลการทำงานดังรูป

มีของใหม่ก็ต้องมีของที่ถูกเอาออกไป นั่นคือ Idling Resources

ซึ่งการเขียนส่วนใหญ่จะต้องทำการ custom และส่งผลให้ Espresso ทำงานได้แย่มาก ๆ ดังนั้นใน Espresso 3.0 จึงได้นำออกไป และสร้างสิ่งใหม่ขึ้นมาที่มีประสิทธิภาพดีกว่าเดิมคือ Idling concurrent ดังนั้นถ้าใครยังใช้พวก CountingIdlingResource อยู่ก็ตามไปแก้ไขกันเอาเองนะ

รวมทั้งเรื่องการทดสอบกับ ContentProvider

ก็ทำการเปลี่ยนจาก ProviderTestCase2 ไปเป็น ProviderTestRule ซึ่งเป็นชื่อในรูปแบบเดียวกับส่วนอื่น ๆ เช่น ActivityTestRule เป็นต้น
อ่านเพิ่มเติมได้ที่ Android Testing
Reference Websites https://android-developers.googleblog.com/2017/07/android-testing-support-library-10-is.html

Viewing all articles
Browse latest Browse all 2029

Trending Articles