espresso-00
ใน Android Studio 2.2 Preview 3 นั้น
ได้ปล่อย Espresso Test Recorder ใน Beta version ให้ลองใช้งานแล้ว
ซึ่งเป็นความสามารถที่ขี้โม้ไว้ในงาน Google I/O 2016

นั่นแสดงว่า เราสามารถบันทึกการทดสอบ Android App ง่าย ๆ
ด้วยการใช้งาน App แบบปกติ โดยผลที่ได้คือ
ชุด code ของการทดสอบแบบอัตโนมัติ
ซึ่งเราสามารถทำการแก้ไขได้อีกด้วย
แต่ก็มีข้อจำกัดพอสมควร !!

ดังนั้นมาทดสอบใช้งานกันดีกว่า

เริ่มด้วย code ตัวอย่างแนะนำให้ใช้ Android Testing Codelab

git clone https://github.com/googlecodelabs/android-testing.git -b step-7

จากนั้นทำการเปิด project ด้วย Android Studio 2.2 Preview 3
ซึ่งเราสามารถใช้งานผ่านเมนู Run -> Record Espresso Test
แสดงดังรูป

espresso-01

จะขึ้นหน้าจอ Record Your Test ขึ้นมาดังรูป

espresso-02

จะรอช้าอยู่ทำไมบันทึกสิครับ
ให้ทำการเล่น App นั่นเอง จะขึ้นผลการบันทึกดังรูป

espresso-03

เมื่อเล่นครบ Flow การทำงานของ App แล้ว
ให้กดที่ปุ่ม Add Assertion เพื่อตรวจสอบว่า
App ทำงานได้อย่างถูกต้องตามที่คาดหวังหรือไม่ ?
จะแสดงการทำงานดังรูป

espresso-04

จากนั้นทำการเลือก Element ที่ต้องการจะตรวจสอบ ดังรูป

espresso-05

เมื่อเราพอใจแล้วให้ทำการบันทึก และ จบการทำงาน
จะให้เรากำหนดชื่อ class ของ Espresso Test ดังรูป

espresso-06

สุดท้ายแล้วจะได้ code ดังรูป
ถ้าใครไม่เคยเขียน Espresso Test มาก่อนน่าจะมึนงงพอสมควร !!

จากนั้นให้ทำการทดสอบด้วยคำสั่ง

$./gradlew cAT

ทุกอย่างผ่านเรียบร้อย !!! มันง่ายมาก ๆ นะ

ดังนั้นมาสรุปผลจากการทดลองใช้แบบคร่าว ๆ กันดีกว่า

เริ่มด้วยความช้า และ การกิน Memory ซึ่งถือเป็นเรื่องปกติของ UI Testing
ดังนั้นใช้เท่าที่จำเป็นเท่านั้น

ในแต่ละ Test class จะมีเพียง method หรือ test case เดียวเท่านั้น
ซึ่งถือว่าเป็นเรื่องที่ดีเลยนะ
ทำให้จัดการ test ได้ง่ายขึ้น

สามารถใช้เฉพาะ code ที่เขียนอยู่ใน App ของเราเท่านั้นนะครับ
เนื่องจาก Espresso Test มันสร้างมาจาก Instrumented Test

ยังไม่สามารถใช้งานกับ WebView ได้
จากการใช้งานมันไม่สามารถจัดการ input ใน WebView และใส่ assertion ได้

ใช้ Assertion แบบพื้นฐานเท่านั้น
ส่วนที่ซับซ้อนต้องมาเขียน code เอาเองนะ
ส่วน feature อื่น ๆ เช่นพวก Idling resources ก็ต้องเขียนเองนะ

แต่สิ่งที่เห็นได้ชัดคือ

ช่วยให้เราเขียนชุดการทดสอบผ่าน UI Test ง่ายและสะดวกขึ้นเป็นอย่างมาก

จะได้ไม่มีข้ออ้างสำหรับการไม่เขียน test อีกแล้วนะ

และหวังว่าจะปรับปรุงความสามารถนี้ให้ดียิ่ง ๆ ขึ้นไป

สำหรับใครที่เขียนเอง จะรู้สึกว่า ทำไมต้องมาใช้ความสามารถนี้ก็เป็นได้
เพราะว่า เขียนเองเร็วกว่าเยอะ !!
แต่ถ้ามองในความสะดวกเริ่มจะสูสีกับ UI Test ของ XCode แล้วนะ

ปล. ไม่ต้องคิดมากนะครับ เอกสารของ Espresso Test Recorder !!
น่าจะทำการแก้ไขเร็ว ๆ นี้นะ

espresso-07

Reference Website
http://peirr.com/writing-android-tests-with-espresso-test-recorder/