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

[Java] มาลองใช้งาน Test containers กัน

$
0
0

โดยปกติการทดสอบในระดับ integration test และ component นั้น มักจะทดสอบผ่านระบบจริง ๆ ซึ่งควบคุมได้ยาก ยกตัวอย่างเช่น การทดสอบกับ Database, Data store รวมไปถึงการทดสอบระดับ UI/Acceptance test ซึ่งต้องทดสอบผ่าน browser แน่นอนว่า การจัดการนั้นไม่ง่ายเลย แต่เมื่อเข้าสู่ยุคของ container แล้วนั้น เรื่องต่าง ๆ เหล่านี้จะง่ายขึ้น แต่แลกมาด้วยการเรียนรู้และเครื่องที่แรงขึ้น หนึ่งในเครื่องมือนั้นคือ Test containers ซึ่งเป็น library ที่พัฒนาด้วยภาษา Java 1.8 ที่สำคัญคือ ใช้งานร่วมกับ JUnit ได้เลย เหมาะมากสำหรับการทดสอบระบบงาน
ปล. เครื่องทดสอบต้องติดตั้ง Docker 17.06 ด้วยนะ และ JDK 1.8 ขึ้นไป
ดังนั้นมาเริ่มใช้งานกันหน่อย น่าจะเป็นอีกหนึ่งแนวทางสำหรับการพัฒนาและทดสอบระบบงาน ให้มีคุณภาพและลดความเสี่ยงต่าง ๆ ลงไป

ยกตัวอย่างการใช้งานกับ Spring Boot

สำหรับการทำงานร่วมกับ Database ผ่าน Spring Data JPA ปกติเราสามารถทดสอบผ่าน @DataJpaTest ได้เลย ซึ่งนั่นก็คือการทดสอบผ่าน Embedded database เช่น H2 เป็นต้น แต่ว่า Database จริง ๆ ไม่ใช่ Embedded database แน่นอน ยกตัวอย่างเช่น MySQL และ PostgreSQL เป็นต้น ซึ่งอาจจะส่งผลให้การทดสอบผิดพลาดหรือต่างไปจากของจริงก็เป็นไปได้มาก ดังนั้นถ้าใช้ Database จริง ๆ เหมือนกับ production กันเลยไหม โดยสามารถใช้ผ่าน Test container ได้ดังนี้ ขั้นตอนที่ 1 เพิ่ม dependency หรือ libray ของ Test containers เข้าไปก่อน ขั้นตอนที่ 2 ทำการกำหนด Image ของ database ที่ต้องการใช้ผ่าน Test containers เลือกใช้งาน PostgeSQL รวมทั้งกำหนดชื่อฐานข้อมูลและ username/password ให้เรียบร้อย ผ่านส่วนของ @ClassRule ของ Unit ดังนี้ [gist id="f6d306e654c6c648692995bac1a9a5b7" file="HelloContainerTest1.java"] ขั้นตอนที่ 3 ทำการกำหนด class Initialzer สำหรับ Spring Boot เพื่อให้ชุดการทดสอบไปเรียกใช้งาน Database ที่เรากำหนดไว้ในขั้นตอนที่ 2 [gist id="f6d306e654c6c648692995bac1a9a5b7" file="HelloContainerTest2.java"] ขั้นตอนที่ 4 เขียนชุดการทดสอบและ run มันซะ [gist id="f6d306e654c6c648692995bac1a9a5b7" file="HelloContainerTest3.java"] เพียงเท่านี้เราก็สามารถทดสอบระบบผ่าน Test containers ได้แล้ว ซึ่งง่ายขึ้นเยอะเลย แต่มันยังเป็น alpha version อยู่นะ ขอให้สนุกกับการ coding ครับ

Viewing all articles
Browse latest Browse all 1997

Trending Articles