[iOS] : มาเขียน Unit Test เล่นๆใน Playground กัน

Chayawat Suntornrak
odds.team
Published in
3 min readJan 26, 2020
https://hackernoon.com/hn-images/1*ljWWR8lL0PeLzQzs6qI6nQ.png
  1. เปิด Xcode แล้วทำการสร้างแบบ playground -> Blank

2. ในที่นี้ตั้งชื่อ file ว่า ChayawatTest(คิดไม่ออก เอาชื่อตัวเองเลยละกัน)

หน้าตาโครงสร้างมันจะออกมาแบบนี้

3. เราจะสร้าง file ไว้ใน Sources เพื่อให้รู้ว่าเอาไฟล์ไหนมา ในที่นี้ตั้งชื่อว่า Chayawat

public class เพื่อให้ file ChayawatTest เห็น

ทีนี้เรามาเริ่มลงมือกันเราจะเริ่มเขียนในรูปแบบ TDD (Test-Driven Development)

* red -> green -> refactor(หมุนๆไป) อ่านได้จากลิงค์นี้เลยครับ อธิบายไว้ดี

สมมุติว่าในที่นี้เราอยาก test ว่า

-> เรียก function นึง แล้วผลลัพธ์อยากให้ออกมา “Chayawat is 22 years old”

-> ก็สร้าง function ขึ้นมาเพื่อเราจะรู้ว่าเราจะ Test function นี้

-> สร้าง test case กัน

* function จะต้องขึ้นด้วย test
* ในที่นี้ตั้งชื่อเคส When -> Should(เมื่อทำอะไร อะไรควรจะเกิดขึ้น)
* ในที่นี้ใช้ตัว XCTAssertEqual (expect, result)
* defaultTestSuite(จะทำการเทส funtion ทั้งหมดในคลาสนี้)

-> มารันไฟล์กัน

แน่นอนว่ามันต้อง fail ออกมาแน่ๆ

expect ควรจะเป็น “Chayawat is 22 years old นะ” แต่ result มันคือ “”

-> มาเขียนโค้ดใหม่ให้มันไม่ fail กัน

ผ่านแล้วววว!!

-> refactor code กันดีกว่า

จะเห็นได้ว่า function getNameAndAge() มันให้ผลลัพธ์เป็นแบบเดิมตลอด เราจะไม่ต้องการ function แบบนั้น เราจะเอา function ที่เรากำหนดอายุเราเองได้

จะ initial ค่าตั้งแต่เรียก class นี้เลย

-> เราจะเพิ่ม test case เข้ามา

แยก expect กับ result ให้ชัดเจน

-> กด run test ใหม่

นี่ก็เป็นหลักเบื้องต้นในการเขียน unit test ครับแบบ TDD (รึเปล่าไม่แน่ใจ 555) จุดประสงค์หลักๆเพื่อทดสอบว่า function นั้นทำงานถูกต้องรึเปล่า ถ้ามี requirement เปลี่ยนที่มีผลกระทบกับ function นั้น เวลาเรารัน test มันจะ fail แน่นอน นี่ก็เป็นข้อดีข้อนึงของ unit test ครับ

** ถ้าผิดพลาดประการใดขออภัย ณ ที่นี้ด้วยครับ ขอบคุณครับ **

--

--