จัดกลุ่มการทดสอบด้วย Gradle TestSets plugin บน Spring Boot
จาการแบ่งชุดการทดสอบตามแนวคิด Test pyramid นั้น จะเห็นได้ว่า
การทดสอบแต่ละระดับก็จะให้ Feedback ที่เร็วและช้าต่างกัน Cost ที่จ่ายก็ต่างกัน และความเชื่อมั่นในการทดสอบก็ต่างกัน
Test | Unit test | Integration test | End-to-end test |
---|---|---|---|
Feedback | Fast | Medium | High |
Cost | Cheap | Affordable | Expensive |
Confidence | Low | Medium | High |
ดังนั้นเราควรจะแบ่งการทดสอบให้เหมาะสมกับ Feedback และ Confidence ที่เราอยากได้
สำหรับใน Spring Boot เราสามารถทำได้โดยใช้ Gradle TestSets plugin ตามนี้
คำอธิบาย
-
ติดตั้ง plugin ผ่าน Gradle โดยเข้าไปเพิ่มในไฟล์
build.gradle
ส่วน Initial - เพิ่มส่วน
testSets
ลงไปในbuild.gradle
จากนั้นเพิ่มชื่อประเภทของการทดสอบ (เราสามารถเก็บ unit test ไว้ใน moduletest
ได้เหมือนเดิม)testSets { integrationTest }
กลุ่ม integration test จะอยู่ใน directory
src/integrationTest
แต่เราสามารถเปลี่ยน directory name ได้โดยเพิ่มdirName
ลงไปtestSets { integrationTest { dirName = 'integration-test' } }
directory ก็จะเปลี่ยนเป็น
src/integration-test
แทนละ - สร้าง directory ใหม่ตามที่เราประกาศเอาไว้จากข้อ 2 จากตัวอย่างจะได้หน้าตาประมาณนี้
src │ main │ test // สำหรับ unit test | integration-test // สำหรับ integration test
- เพิ่ม task ใน
build.gradle
ตามชื่อของประเภทการทดสอบของเรา เพื่อให้ gradle รู้ว่า directory นี้มี test อยู่ ตกอย่างเช่นintegrationTest { useJUnitPlatform() }
เป็นอันเสร็จพิธี เท่านี้ก็สามารถรัน unit test ได้ผ่านคำสั่ง./gradlew test
และ integration test ผ่านคำสั่ง ./gradlew integrationTest
นอกจากนี้ยังมี feature ที่น่าสนใจอย่างเช่น test extension, publishing artifact และ Kotlin support ด้วย ลองไปเล่นกันได้ครับ