ใน Android Studio 2.2 Preview 3 นั้น
ได้ปล่อย Espresso Test Recorder ใน Beta version ให้ลองใช้งานแล้ว
ซึ่งเป็นความสามารถที่ขี้โม้ไว้ในงาน Google I/O 2016
นั่นแสดงว่า เราสามารถบันทึกการทดสอบ Android App ง่าย ๆ
ด้วยการใช้งาน App แบบปกติ โดยผลที่ได้คือ
ชุด code ของการทดสอบแบบอัตโนมัติ
ซึ่งเราสามารถทำการแก้ไขได้อีกด้วย
แต่ก็มีข้อจำกัดพอสมควร !!
ดังนั้นมาทดสอบใช้งานกันดีกว่า
เริ่มด้วย code ตัวอย่างแนะนำให้ใช้ Android Testing Codelab
[code]
git clone https://github.com/googlecodelabs/android-testing.git -b step-7
[/code]
จากนั้นทำการเปิด project ด้วย Android Studio 2.2 Preview 3
ซึ่งเราสามารถใช้งานผ่านเมนู Run -> Record Espresso Test
แสดงดังรูป
จะขึ้นหน้าจอ Record Your Test ขึ้นมาดังรูป
จะรอช้าอยู่ทำไมบันทึกสิครับ
ให้ทำการเล่น App นั่นเอง จะขึ้นผลการบันทึกดังรูป
เมื่อเล่นครบ Flow การทำงานของ App แล้ว
ให้กดที่ปุ่ม Add Assertion เพื่อตรวจสอบว่า
App ทำงานได้อย่างถูกต้องตามที่คาดหวังหรือไม่ ?
จะแสดงการทำงานดังรูป
จากนั้นทำการเลือก Element ที่ต้องการจะตรวจสอบ ดังรูป
เมื่อเราพอใจแล้วให้ทำการบันทึก และ จบการทำงาน
จะให้เรากำหนดชื่อ class ของ Espresso Test ดังรูป
สุดท้ายแล้วจะได้ code ดังรูป
ถ้าใครไม่เคยเขียน Espresso Test มาก่อนน่าจะมึนงงพอสมควร !!
[gist id="c6e60fcb85c9be3086b25a5bd2f17825" file="NotesActivityTest.java"]
จากนั้นให้ทำการทดสอบด้วยคำสั่ง
[code]
$./gradlew cAT
[/code]
ทุกอย่างผ่านเรียบร้อย !!! มันง่ายมาก ๆ นะ
ดังนั้นมาสรุปผลจากการทดลองใช้แบบคร่าว ๆ กันดีกว่า
เริ่มด้วยความช้า และ การกิน 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 !! น่าจะทำการแก้ไขเร็ว ๆ นี้นะ Reference Website http://peirr.com/writing-android-tests-with-espresso-test-recorder/