Test Java App Server ด้วย IntelliJ IDEA Community Edition + Tomcat

idea-tomcat

IntelliJ IDEA สนับสนุนการเทสต์กับแอพเซิร์ฟเวอร์เฉพาะบน Ultimate Edition เท่านั้น จึงทำให้ไม่สามารถใช้งานร่วมกับ Apache Tomcat บน Community Edition ได้

แต่สำหรับโปรเจคที่พัฒนาบนเมเว่น (Maven) มี 2 ทางเลือก เพื่อใช้งาน Tomcat บน Community Edition ได้ สามารถนำวิธีนี้ไปประยุกต์ใช้ทูลส์อื่นๆ เช่น Gradle ได้:

Continue reading

Advertisements

ปรับโครงสร้าง URL บน Java Web Server ให้กระชับด้วย UrlRewriteFilter

การทำเว็บไซต์แบบประมวลผลที่เซิร์ฟเวอร์ อาจมีการประมวลผลตามการร้องขอของผู้ใช้ (dynamic generated content) ซึ่งในสายจาวาใช้ JSP/Servlet ในการประมวลผล

โครงสร้างของ URL จะเป็นแบบ QueryString ซึ่งยาว ทำให้จำยาก ในสาย SEO แนะนำให้ URL มีโครงสร้างที่แน่นอน และคาดเดาได้ เพื่อเหมาะกับการที่เสิร์ชเอ็นจิน (Search Engine) อย่างกูเกิลในการเก็บข้อมูล (indexing)

มีผู้พัฒนาไลบรารี่เพื่ออำนวยความสะดวกในการนี้โดยเฉพาะคือ UrlRewriteFilter ซึ่งหลักการคล้ายๆกับ mod_rewrite ใน Apache web server คือจับรูปแบบของ URL ด้วยเรกกูลาร์เอ็กซ์เพรสชัน (regex: Regular Expression) แล้วเปลี่ยนให้อยู่ในรูปแบบที่เซิร์ฟเวอร์เข้าใจคือ QueryString เช่น จาก /category/mobile แปลงเป็น /index.jsp?category=mobile เป็นต้น

ในเว็บไซต์ของผู้พัฒนาได้สรุปขั้นตอนสั้นๆในลักษณะ Quick Start Guide ที่ทำตามได้อย่างง่ายดายอยู่แล้ว ในที่นี้จะใช้ Maven ซึ่งมีขั้นตอนดังนี้

Continue reading

แยก 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)