2 คอนเซปพื้นฐานที่ควรเข้าใจใน Junit

JUnit คือเฟรมเวิร์กสร้างโดย อีริก แกมมา (Erich Gamma) และ เคย เบก (Kent Beck)

Framework คือโค๊ดชุดหนึ่ง เป็นเสมือนเครื่องมือให้เราเอาไว้ใช้ในโปรเจก แต่ Framework ต่างจากชุดเครื่องมือตรงที่ จะมีโครงสร้างที่ดีกว่า ง่ายกว่า ที่นอกเหนือไปจากกล่องเครืองมือเพียงอย่างเดียว

อาจมองง่ายๆว่า Toolkits คือกล่องเครื่องมือ และอุปกรต่อเรือ แต่ Framework คืออู่ต่อเรือที่มีเครื่องมืออยู่พร้อม
ซึ่งนอกจากจะมีเครื่องมือแล้ว ยังแบ่งพื้นที่เป็นสัดส่วน เช่น ที่พักเรือ ที่ต่อเรือ ที่เก็บเรือ ฯลฯ (ผมก็ไม่เคยเห็ยอู่ต่อเรือเหมือนกัน แต่มโนเอา )

Junit แม้จะไม่ใช่เพกเกจมาตรฐานของจาวา แต่ก็อาจเรียกได้ว่าเป็นที่ยอมรับกันโดยทั่วไป

Unit test คือการทดสอบในหน่วยที่เล็กที่สุด ที่ไม่เกี่ยวข้องกับยูนิตอื่นๆ
Integration test คือการทดสอบเมื่อแต่ละยูนิตทำงานร่วมกัน


การที่ Junit จะทำงานได้คลาสที่เขียนเทสต้องเป็น public และมี no - arg constructor หรือก็คือ default constructor นั่นเอง

Junit จะทำการสร้าง oject ของเทสคลาส (Test class คลาสที่เราเขียนไว้สำหรับ Junit ในตัวอย่างนี้คือ FactorialTest.java) ก่อนจะเรียก @Test แต่ละอัน. ทั้งนี้จะช่วยปกป้องในเรื่องการใช้ object ของ target ร่วมกัน. หมายความว่า @Test แต่ละตัวจะทำการทดสอบโค๊ดจาก object ของใครของมัน ไม่เกี่ยวกันกับ @Test อื่น


ฟังก์ชั่นการทำงาน
assertArrayEquals("Error message to show" , A , B )ทดสอบการเท่ากันของอาเรย์
assertEquals("Error message to show", A, B)ทดสอบการเท่ากันของ object A กับ object B โดยจะทำการเรียก
equals() ฟังก์ชั่นจากA และผ่าน B เป็นพารามิเตอร์
assertSame("Error message to show", A, B)ทดสอบ Object A และ Object B ว่าเป็นอันเดียวกันหรือไม่ ฟังก์ชั่นนี้จะเรียกใช้เครื่องหมาย ==
assertTrue("Error message to show", A)ทดสอบว่า A มีค่าเป็น true หรือไม่
assertNotNull("Error message to show", A)ทดสอบว่า A มีค่าเป็น null หรือไม่

ในโพสต่อไปเราจะมาดูวิธีการเทสหลายๆค่า หลายๆคลาสกันครับ และยังมีสิ่งที่เราควรรู้ จะค่อยเอาลงทีละนิดพร้อมกับโค๊ดที่เราจะทำกันครับ