[iOS Dev] Test Driven Development with Kiwi (Part I: Setup)
ขอเล่าก่อนว่า ผมได้ยินคำว่า TDD มาสักพักละ แต่ตัวผมเอง มองว่าทำไมเราต้องเสียเวลาเขียน Test
ไปเพื่ออะไร แต่ไม่รู้อะไรดลใจ ให้เริ่มตระหนักว่า มันอาจจะช่วยให้เรามองอะไรได้กว้างขึ้นในการเขียนโปรแกรม ก็เลยอยากลองดู ...
โดยใน Xcode ก็มี SenTest Framework มาให้อยู่นะ แต่มันไม่สวยเลย (เคยเขียนที่ Opendream แปปนึง)
มีคนแนะนำตัวนี้มา เลยลองเล่นดู ก็พบว่า น่ารักใช่ย่อย มันชื่อว่า "Kiwi"
** ใครเคยเขียน Rspec บน Rails มาดูออก ว่ามันเหมือนกัน ฮาาา
[iOS Dev] Hello, Cocoapods!
ส่วนใครอยากทำแบบไม่มี 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
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 หน้านะ










Comments
Post a Comment