[iOS Dev] Test Driven Development with Kiwi (Part II: TDD)
คราวนี้เราจะมาเขียน Test กันละ ... ตัวอย่างที่ผมจะยกมาก็คือ Factorial Function
Write a Test
Watch it Fail
and Make it Pass
Write a Test
Watch it Fail
and Make it Pass
** ก่อนอื่นให้ไปลบ Sample Test ในฟังก์ชั่น testExample ที่อยู่ใน testTargetName.m ก่อนนะ :)
มาเริ่มกันเลย ขั้นแรกให้เราสร้าง Objective-C Test Case Class ขึ้นมาก่อน
เมื่อสร้างแล้ว ก็ให้ลบไฟล์ Header File (.h) ออกซะ แล้วลบเนื้อหาภายใน Implementation File (.m) แบบนี้
เวลาจะทำการ Test ก็ดูที่ Scheme ให้ดีนะครับ ว่าเป็นตัว Test Target ที่เราสร้างขึ้นหรือยัง ?
ถ้าต้อง Test ให้กด cmd + U หรือที่เมนู Product -> Test
ที่ยกตัวอย่างจำเป็นคำสั่งเบื้องต้นเท่านั้น อ่านเต็มๆ ได้ที่นี่เลยนะ
คราวนี้เรามาเริ่มเขียน Test กันได้เลย Factorial Function ควรจะเป็นยังไงครับ ?
ผมสร้าง KWMathFunction Class ขึ้นมาเพื่อเก็บฟังก์ชั่นการคำนวณทางคณิตศาสตร์เอาไว้
เมื่อสร้างแล้วเขียน Test เบื้องต้นว่า Factorial ของ 0 และ 1 ควรจะได้ 1
แน่นอนครับ Fail และโดนด่าว่า ไม่มีฟังก์ชั่นนี้โว้ยยยยย = ='
แน่นอนว่า ไม่มีก็ไปเขียน (ต้องประกาศใน Header File ด้วยนะ) แล้วก็เขียนให้ Test มันผ่าน
เขียนแค่นี้จริงๆ นะ ไม่ได้ตลก เราบอกแล้วว่า เราจะเขียนแค่ให้มัน ผ่าน
คราวนี้พอกลับมาเทสก็จะผ่านละ ใน 2 Case ที่เราเขียนไป
จากนั้นก็เพิ่ม Test เข้าไป
คราวนี้พอ Test เราก็จะ Fail แล้วโดนด่าว่า "ผิดโว้ยย ค่าที่ได้คือ 1" (แหงล่ะ)
พอละ เขียนโปรแกรมให้ถูกกันได้เลย (ฟังก์ชั่นที่ซับซ้อนกว่านี้ก็ต้องทำเยอะกว่านี้นะ)
คราวนี้พอ Test ก็จะผ่านทุก Case ที่เราเขียนขึ้นมา ... เท่านี้เอง :)
ลองไปทำดูนะครับ การทำ TDD เป็นเรื่องของบุคคลนะ คือทำหรือไม่ทำก็ได้ แต่ทำแล้วเร็วส์ และ หล่อส์
...
..
.
เค้าว่ามาอย่างนั้น :P