[iOS Dev] Test Driven Development with Kiwi (Part I: Setup)


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

โดยใน Xcode ก็มี SenTest Framework มาให้อยู่นะ แต่มันไม่สวยเลย (เคยเขียนที่ Opendream แปปนึง)
มีคนแนะนำตัวนี้มา เลยลองเล่นดู ก็พบว่า น่ารักใช่ย่อย มันชื่อว่า "Kiwi"
ใน Tutorial ครั้งนี้จะใช้ Cocoapods ด้วยนะครับ ใครไม่รู้จักขอให้ไปอ่าน Blog ที่แล้วก่อนนะ
** ใครเคยเขียน Rspec บน Rails มาดูออก ว่ามันเหมือนกัน ฮาาา


ส่วนใครอยากทำแบบไม่มี Cocoapods ก็ตามไปที่นี่ได้เลย http://git.io/RwQtQQ
ขั้นแรกให้สร้าง Unit Test Target ขึ้นมาก่อน โดยไปที่

File -> New -> Target... -> Other -> Cocoa Touch Unit Testing Bundle


เมื่อสร้างเสร็จแล้ว ใน Project Navigator ก็จะมี Unit Test Target เพิ่มขึ้นมา


จากนั้นปิด Xcode Project ... สร้าง Podfile ขึ้นมา แล้วเพิ่ม Kiwi (หรือถ้ามีอยู่แล้ว ก็ให้เพิ่มเข้าไป)
** ตรง KiwiTDDTests ก็เปลี่ยนให้ตรงกับ Unit Test Bundle ที่สร้างขึ้นมานะครับ



สั่ง Install Dependencies ด้วยคำสั่ง

$ pod install

เมื่อเสร็จแล้วให้เปิด projectName.xcworkspace ขึ้นมาเล่นกันต่อเลย
ต่อไปก็เป็นขั้นตอนการ Configuration อาจจะดูยุ่งยากหน่อย แต่ทำสัก 2-3 รอบก็คล่องละ ผมว่า

1. เมื่อเปิด projectName.xcworkspace ขึ้นมาก็จะพบกับไฟล์ตัวนึงที่ชื่อว่า Pods-<TestTargetName>.xcconfig ไฟล์นี้ถูกสร้างขึ้นโดย Cocoapods และมีคำสั่งที่จะใช้เชื่อมต่อกับ Test Target อยู่ด้านใน

2. ไปที่ Project Navigator เลือกที่ Project ของเราแล้วเลือกแถบ Info
3. ดูให้ดีว่าทุก configurations ในการสั่งให้ใช้ไฟล์ .xcconfig ข้างต้นในการ Test


4. ไปที่ Unit Test Target แล้วเลือกแถบ Build Settings
5. Other Linker Flags จะต้องมี -objC -framework SenTestingKit


6. ค้นหาคำว่า "Bundle Loader" แล้วใส่

$(BUILD_PRODUCT_DIR)/projectName.app/ApplicationTargetName ลงไปครับ


7. ค้นหาคำว่า "Test Host" แล้วใส่ $(BUNDLE_LOADER)


จากนั้นไปที่เมนู

Product -> Scheme -> Manage Schemes

ให้เลือกที่ Unit Test Target ที่เราสร้างขึ้น แล้วกด Edit ...

จากนั้นในแถบด้านข้างเลือก Test แล้วดูว่ามี Unit Test Bundle หรือปล่าว (ตามภาพคือมีแล้ว)
ถ้าไม่มีให้ Add เข้ามาครับ


เป็นการจบการ Setup Wiki TDD ที่ยาวนาน :) เดี๋ยวไปต่อวิธีการเขียนเบื้องต้นกันใน Blog หน้านะ

Popular posts from this blog

[Android Dev] การติดตั้ง Eclipse+AndroidSDK เพื่อพัฒนาโปรแกรมบน Android

12 วิธี การบริการและดูแลลูกค้าในร้าน Starbucks

5 TED Talk ที่จะช่วยให้คุณทำงานดีขึ้น