1 ติดตั้ง Junit เข้ากับ Java โปรเจก

สิ่งที่เราต้องการตอนนี้คือ Jars ไฟล์สองตัว เพราะ Test cases  ทีเราจะเขียนจะทำงานได้ก็ต้องอาศัยโค๊ดส่วนหนึ่งที่ทาง Junit พัฒนาเอาไว้ให้

Jar ไฟล์ โดยทางเทคนิคแล้ว ก็คล้ายกับ zip ไฟล์ ที่ทำการรวมไฟล์หลายๆไฟล์เข้าไว้ด้วยกัน อาจจะเป็นจาวาคลาสหลายๆคลาสรวมกัน ทั้งเอกสารที่เกี่ยวข้องต่างๆ สิ่งที่เราต้องทำตอนนี้ก็แค่ลิงค์ Jar ไฟล์ที่เกี่ยวข้อง เข้ากับโปรเจกที่จะทำการเขียน Test case

เป้าหมายที่เราจะทำให้ได้ในโพสนี้คือ สร้างโปรเจกขึ้นมาอันหนึ่้ง คือโปรเจกเกี่ยวกับฟังก์ชั่นคณิตศาสตร์ เราจะสร้างฟังก์ชั่นทีชื่อว่า factoria ทำการหาค่า factorial ของจำนวนเต็มบวก กับ ศูนย์

0! = 1
1! = 1
2! = 1 x 2
3! = 1 x 2 x 3
4! = 1 x 2 x 3 x 4
...
...

หมายเหตุ โพสนี้แทนทีจะเป็นแค่การติดตั้ง Junit แต่เราอยากให้ท่านเห็นภาพโดยรวม วิธีที่ดีกว่าคือการสร้างโปรเจกตั่งแต่แรก. แต่บทถัดๆไปเราจะเจาะเฉพาะในเรื่องนั้นๆ

Step 1. สร้างโปรเจก
Step 2. ใส่ Junit jar files
Step 3  เขียน Test case
Step 4. ทดสอบ ถ้าไม่ผ่านก็แก้ไขโค๊ดจนกวาจะผ่าน
Step 5. เสร็จสิ้นการทำงาน

--------------------------------------------------
Step 1 สร้างโปรเจกด้วย Eclipse Kepler





จากนั้น คลิกขวาที่ src เลือก new > Package
ตรงช่อง Name ตั้งชื่อเพกเกจว่า test แล้วกด Finish.

ในเพกเกจ test สร้างคลาสขึ้นมาหนึ่งคลาสชื่อ FactorialTest คุณจะตั้งชื่ออะไรก็ได้ โดยปกติ ใส่คำว่า Test ไว้ข้างหลังชื่อคลาสที่ต้องการเทส จะทำให้ดูง่ายกว่า ก็จะได้ตามรูปข้างล่าง




Step 2.
ตอนนี้เราพร้อมจะทำการเขียนโค๊ดทดสอบ factorial ฟังก์ชั่นแล้ว แต่ขาด Jar file ที่จำเป็นต้องใช้ ดังนัันเริ่มทำการดาวโหลดกันเลย

ดาวโหลด Jars ไฟล์

คุณจะต้องดาวโหลดสองไฟล์คือ junit.jar กับ hamcrest-core.jar แล้วทำการแตกไฟล์เอาสองตัวนี้ใส่ไว้ในโฟเดอร์ libs

โฟเดอร์ libs สร้างได้โดยทำการคลิกขวาที่ MathUtils >  new > folder แล้วตั้งชื่อที่ Folder name เป็น libs แล้วกด Finish






ตอนนี้ เราได้ Jar files เข้ามาในโปรเจกแล้ว แต่ว่ายังไม่ได้ตั้ง path ให้มัน เราต้องบอก Eclipse ว่าให้ทำการเอา Jar files 2 ตัวนี้เข้าไปไว้ในโปรเจกระหว่างการคอมไพล์ด้วยนะ

ทำได้โดยการเลือก 2 ไฟล์แล้วคลิกว่า Build Path > Add to Build Path แล้ว Eclipse ก็จะสร้าง Referenced Libraries ขึ้นมาดังภาพ



จากนั้นก็ทำการเขียน Test case ดังภาพ ข้างล่าง
หมายเหตุ กรุณาสังเกตตรง import นะครับ
assertEquals ได้มาจาก import static org.junit.Assert.assertEquals;
@Test ได้มาจาก import org.junit.Test;




เสร็จแล้วครับ :) 

เราก็มาลองเทสกันเลย ว่าโค๊ดที่เขียนมาจะถูกหรือไม่ โดยทำการคลิกขวาที่ FactorialTest.java ตรงคอลัมทางซ้ายมือ หรือจะคลิกขวาที่ ซอสโค๊ดก็ได้ แล้วเลือก Run as > Junit test
ก็จะได้ error ตามภาพ :D




Jnuit บอกเราว่า java.lang.StackOverflowError ก็เพราะว่าโค๊ดที่เราเขียน fact ฟังก์ชั่น มันไม่มีทางจบ เพราะมันเรียกตัวมันเองตลอดไปเรื่อยๆ ซึ่งที่ถูกก็ต้องเป็น



จากนั้นก็กดปุ่มเทสอีกที ก็จะได้สีเขียวชื่นใจตามภาพ




ยินดีด้วยครับ คุณได้ทำการสร้าง TDD อันแรกได้แล้ว โพสต่อไปเราจะมาเข้าใจว่า assertEquals ทำงานยังไง  เลข 0 ที่ argument หลังสุดหมายความว่ายังไง เจอกันในโพสถัดไปครับ