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 ฟังก์ชั่น มันไม่มีทางจบ เพราะมันเรียกตัวมันเองตลอดไปเรื่อยๆ ซึ่งที่ถูกก็ต้องเป็น
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
public class Factorial | |
{ | |
public int fact(int n) | |
{ | |
if( n == 1 || n == 0) | |
return 1; | |
return n * fact(n - 1); | |
} | |
} |

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