แยก Unit Test กับ Integration Test ใน Java ด้วย Maven

การทำยูนิตเทสต์ด้วยจาวา ควรจะแยกเทสต์เคส (Test Case) ที่ต้องติดต่อข้ามโปรเจคท์ หรือข้ามคอมโพเนนท์ ไปเป็นอินทิเกรชั่นเทสต์ แทนยูนิตเทสต์ ถึงแม้จะใช้เจยูนิตในการทำก็ตาม เพราะโดยส่วนมากอินทิเกรชั่นเทสต์นั้นจะใช้เวลานานกว่า ไม่เหมาะที่จะรันบ่อยๆ

เมเว่น (Maven) ได้กำหนดเฟสการเทสต์ 2 แบบนี้แยกจากกันไว้อยู่แล้ว โดยยูนิตเทสต์จะถูกรันในเฟสเทสต์ (mvn test) ส่วนอินทิเกรชั่นเทสต์จะถูกรันในเฟสเวอริฟาย (mvn verify) ค่าเริ่มต้นนั้น อินทิเกรชั่นเทสต์จะไม่ได้กำหนดให้ทำงาน

ถ้าต้องการใช้เมเว่นในการทำเทสต์

  1. เพิ่มปลั๊กอินเฟลเซฟ (maven-failsafe-plugin) เข้าไปในส่วน <build> ของ pom.xml
  2. แยกชนิดการเทสต์ด้วยชื่อคลาส
    • **/*Test.java คือ ยูนิตเทส
    • **/*IT.java คือ อินทิเกรชั่นเทสต์
  3. รัน mvn test เมื่อต้องการรันยูนิตเทสต์ และ mvn verify เมื่อต้องการรันอินทิเกรชั่นเทสต์

อย่าลืมว่าอินทิเกรชั่นเทสต์นั้นจะต้องผ่านยูนิตเทสต์ก่อนจึงจะรันได้นะ

ที่มา: http://maven.apache.org/surefire/maven-failsafe-plugin/examples/inclusion-exclusion.html

สแลช (Slash)

Advertisements