![]()
![]()
ปัญหาอย่างหนึ่งของการพัฒนา Android app คือ การทดสอบ
แต่เมื่อเขียนชุดการทดสอบแล้ว มักจะมีการเปิดให้ทำ Code coverage เสมอ
ซึ่งเครื่องมือที่ใช้คือ Jacoco
แต่ปัญหาที่ตามมาจากการเปิดให้ทำ Code coverage คือ ความช้าของการ build
ดังนั้นเรามาเปิดหรือปิดความสามารถนี้กันหน่อย
เริ่มต้นด้วยการเปิดใช้งาน Code coverage แบบปกติ
ทำการแก้ไขไฟล์ build.gradle ดังนี้
[gist id="47ed25ff8f55f29b709665b9ca5fc0a2" file="build1.gradle"]
จากนั้นลองทดสอบ run หน่อย
โดยในตัวอย่างนี้จะเป็นการ run ผ่าน command line ทั้งหมด
ซึ่งเพิ่ม --profile เพื่อดูรายละเอียดของการทำงานทั้งหมด
[code]
$./gradlew clean assembleDebug --profile
[/code]
ผลที่ได้คือ
จะพบว่ามี task ชื่อว่า :app:transformClassesWithJacocoForDebug
ใน debug build เสมอ ลองดูกันเอาว่า ใช้เวลาการทำงานเท่าไร ?
แน่นอนว่า เยอะพอได้เลย
ประเด็นที่น่าสนใจคือ ถ้าบางครั้งไม่ต้องการให้ run Code coverage ละ จะทำอย่างไร ?
ต้อง comment ในไฟล์ build.gradle ตลอดไหม ?
ไม่น่าจะดีนะ
ดังนั้นเลยใช้วิธีการส่งค่าจาก command line ไปเลยสิ
ดังนั้นแก้ไขไฟล์ build.gradle กันหน่อย
[gist id="47ed25ff8f55f29b709665b9ca5fc0a2" file="build2.gradle"]
จากนั้นทำการ run อีกครั้ง ซึ่งทำงานเหมือนเดิม
เพิ่มเติมคือส่งค่า coverage เข้ามา เพื่อให้ทำการ run Code coverage ด้วย
ด้วยคำสั่ง
[code]
$./gradlew -Pcoverage clean assembleDebug --profile
[/code]
แต่ถ้าไม่ต้องการใก้ run Code coverage ก็ไม่ต้องส่งมา
[code]
$./gradlew clean assembleDebug --profile
[/code]
เพียงเท่านี้ เราก็สามารถควบคุมการทำงานของ Code coverage ได้แล้ว
แถมเวลาการ build ก็เร็วขึ้นอีกด้วย