r1 - 28 Sep 2008 - 17:24:32 - PanitaMeananeatraYou are here: SETEC Wiki >  Knowledge Web  > SoftwareEngineeringCategory > SoftwareTesting > SoftwareTestingTools > Tool_EclJUnit

การสร้าง JUnit ด้วย Eclipse

การใช้ JUnit ในการ Test โปรแกรม ระดับ Unit Test เป็นการ Test function อย่างง่ายๆ

   1. ก่อนอื่นเปิด Eclipse
JU1.jpg

   2. เมื่อเข้ามาโปรแกรม แล้ว ก็สร้างโปรเจกใหม่ ตั้งชื่อได้ตามสบายเลย

JU2.jpg

JU3.jpg

   3. เสร็จแล้ว คลิกขวาที่ Root Node ใน Package Explorer ที่ชื่อ ForJUnitTest??(อันนี้ชื่อโปรเจกผมตั้งเอง) เลือก New -> Class เพื่อสร้างคลาสสำหรับทดสอบ

JU4.jpg

ตั้งชื่อคลาส แล้วก้อคลิกที่ Finish เลย

JU5.jpg

   4. ที่ MyClass??.java ให้พิมพ์ method สำหรับทดสอบดังนี้ (สุดท้ายก็หนีไม่พ้น Hello World 555+ )

JU6.jpg

   5. ทีนี้เราก็จะได้คลาส สำหรับทดสอบแล้ว นั่นคือ เราจะดูว่า มัน return ค่าออกมาเป็นคำว่า "Hello World" รึเปล่า ช่วงต่อไปถึงเวลาทดสอบละ คลิกที่ ForJUnitTest?? เลือก New -> JUnit Test Case

JU7.jpg

ตั้งชื่อ TestMyClass?? (สังเกตว่ามี Test นำหน้า) แล้วก้อเลือกเครื่องหมายถูก ที่ setUp() กับ tearDown() เพื่อ implement method จาก super class ชื่อ TestCase?? อธิบายซักนิส

setUp() คือ method ที่ ใช้สำหรับเตรียมการ class object หรือ method เพื่อทำการทดสอบ คล้ายๆกะ Init.. อะไรประมาณนั้น tearDown() คือ method ที่ใช้สำหรับ สิ้นสุดการ Test คล้ายๆกับ destructure อะไรประมาณนั้นหละ เช่นถ้าเราเปิดการเชื่อมต่ออะไรอยู่ เช่น IO ในการ Test เราก้อ มา close IO ได้ที่ tearDown หรือไม่ก็ทำให้ object เป็น null

JU8.jpg

สังเกตว่า Eclipse มันจะเตือน โดยขีดเส้นใต้สีแดงๆ ที่ junit แสดงว่าในโปรเจกเรา ยังไม่มี Library ของ JUnit มา Reference

JU9.jpg

   6. เพราะฉะนั้น เรามา Add Reference กันก่อน คลิกขวาที่ ForJUnitTest?? เลือก Properties แ้ล้วจะมีรูปขึ้นมาตามรูปข้างล่าง แล้วก้อเ้ลือก หมวด Java Build Path ด้านขวามือคลิกที่ Add Library

JU10.jpg

   7. เลือก JUnit คลิก Next เลือก JUnit 3 คลิก Finish

JU11.jpg

   8. ทีนี้เราก็จะได้ Library JUnit 3 อยู่ในโปรเจกเราแล้ว เส้นเตือนสีแดงๆก็จะหายไป

   9. ทีนี้เราจะลองมาเขียน function สำหรับ Test กัน ให้เขียน code เพิ่มตามรูป

JU12.jpg

อธิบายซักนิด จะเห็นว่าเราสร้าง method ใหม่ขึ้นที่ คลาส TestMyClass?? สำหรับ test method ชื่อ say ใน MyClass?? เราเลยตั้งชื่อ โดยเพิ่ม prefix คำว่า "test" ข้างหน้า ว่า testSay

และใช้ method ชื่อ assertEqual(expected,actual) parameter แรก คือ ค่าที่คาดหวังไว้ parameter ที่สองคือ ค่าจริงๆที่เกิดจากการ test เพราะฉะนั้น ต้องใส่เป็น

assertEquals("Hello Word",someClass.say());

ค่าจริงๆ จากการ เรียก method someClass.say() นั่นเอง

JU13.jpg

   10. ทีนี้เราจะลอง run ดู คลิกตามรูป เลือก Run As -> JUnit Test ถ้ามีหน้าต่างขึ้นมาถามว่าจะ Test File ไหนบ้างก็เลือก MyClass??.java และคลิก OK

JU14.jpg

   11. จะได้ผลลัพธ์ ดังรูป

JU15.jpg

อธิบายซักนิด

1 คือ จำนวน Method ทั้งหมดที่เราทำการ Test

2 คือ List รายการ การ Test ว่ามี Method ชื่อไรบ้าง

3 คือส่วนที่แสดงรายละเอียด การ Test

สังเกตว่าจะเป็นแถบสีแดง นั่นคือ เรา Test ไม่ผ่านนั่นเอง

   12. ทีนี้เราจะมาดูว่า มัน error ตรงไหน รายละเอียดเป็นยังไงก็คลิกที่ บริเวณหมายเลข 3 ในรูปข้างบน ที่ List จะบอกรายละเอียด error ดังรูปข้างล่าง

JU16.jpg

   13. เมื่อเรากลับไปแก้ การ return ค่าใน method say() ที่คลาส MyClass?? จาก "Hello World" เป็น "Hello Word" จะ Test ผ่าน เป็นแถบสีเขียวดังรูปข้างล่าง

JU17.jpg

References


toggleopenShow attachmentstogglecloseHide attachments
Topic attachments
I Attachment Action Size Date Who Comment
jpgjpg JU1.jpg manage 39.3 K 28 Sep 2008 - 17:17 PanitaMeananeatra  
jpgjpg JU2.jpg manage 44.2 K 28 Sep 2008 - 17:17 PanitaMeananeatra  
jpgjpg JU3.jpg manage 56.7 K 28 Sep 2008 - 17:17 PanitaMeananeatra  
jpgjpg JU4.jpg manage 28.4 K 28 Sep 2008 - 17:17 PanitaMeananeatra  
jpgjpg JU5.jpg manage 52.6 K 28 Sep 2008 - 17:17 PanitaMeananeatra  
jpgjpg JU6.jpg manage 7.6 K 28 Sep 2008 - 17:18 PanitaMeananeatra  
jpgjpg JU7.jpg manage 31.9 K 28 Sep 2008 - 17:18 PanitaMeananeatra  
jpgjpg JU8.jpg manage 54.7 K 28 Sep 2008 - 17:18 PanitaMeananeatra  
jpgjpg JU9.jpg manage 11.9 K 28 Sep 2008 - 17:18 PanitaMeananeatra  
jpgjpg JU10.jpg manage 55.5 K 28 Sep 2008 - 17:18 PanitaMeananeatra  
jpgjpg JU11.jpg manage 27.4 K 28 Sep 2008 - 17:21 PanitaMeananeatra  
jpgjpg JU12.jpg manage 22.4 K 28 Sep 2008 - 17:21 PanitaMeananeatra  
jpgjpg JU13.jpg manage 22.4 K 28 Sep 2008 - 17:21 PanitaMeananeatra  
jpgjpg JU14.jpg manage 41.2 K 28 Sep 2008 - 17:21 PanitaMeananeatra  
jpgjpg JU15.jpg manage 77.0 K 28 Sep 2008 - 17:22 PanitaMeananeatra  
gifgif JU16.gif manage 21.1 K 28 Sep 2008 - 17:22 PanitaMeananeatra  
gifgif JU17.gif manage 20.3 K 28 Sep 2008 - 17:22 PanitaMeananeatra  
Edit | Attach | Printable | Raw View | Backlinks: Web, All Webs | History: r1 | More topic actions
 
Powered by SETEC Wiki
Copyright ©2012 by National Electronics and Computer Technology Center, NECTEC.
Ideas, requests, problems regarding SETEC Wiki? Send feedback