ทาง Apple ได้เปิดตัว Swift Testing ซึ่งเป็น unit test framework ตัวใหม่
ซึ่งมาพร้อมกับ Xcode 16
โดยที่มี syntax และรูปแบบการใช้งานที่ง่ายและสะดวกขึ้น
มีการ assert ที่ดีขึ้น
อีกทั้งยังมี parameterized testing เป็นต้น
ดังนั้นมาทำความรู้จักและลองใช้งานกันหน่อย
ก่อนหน้านี้ในการเขียน test ด้วย Swift บน Xcode นั้น
จะใช้งาน XCTest ซึ่งเป็น test framework ที่เก่ามาก ๆ
เทียบกับ JUnit 3 ได้เลย
โดยชื่อ test case ต้องขึ้นด้วยคำว่า test
ใน Swift Testing เขียนง่าย ๆ ได้แบบนี้
แต่ละ test case ขึ้นต้นด้วย @test
และสามารถใส่ชื่อที่อธิบายได้ง่าย ๆ เช่น @test("human readtable")
ทำไมมันเหมือน ๆ Junit 5 เลย
ในส่วนของการ assert จะใช้ #assert
เป็น feature ใหม่ ชื่อว่า Expression macros
รวมทั้งยังแบ่งกลุ่มของ test case ด้วย tag แบบง่าย ๆ ได้อีก (ไม่ใช่ของใหม่อะไรเลย)
ดังนี้
ในการ run นั้น จะเป็นการ run แบบ parallel โดย default
นั่นหมายความว่าแต่ละ test case/method จะถูก run แยก instance กัน
ดังนั้นทำให้แต่ละ test case/method ทำงานเป็นอิสระแก่กันไปเลย
ถ้าต้องการทดสอบพวก Exception ต่าง ๆ ทำได้ดังนี้
[gist id="75065e64e58acf4928105a8d40996af4" file="2.swift"]สำหรับการทดสอบด้วย data-driven testing หรือ parameterized นั้น
ก็สามารถทำได้ง่าย ด้วยการใส่ arguments เข้าไปใน @Test ได้เลย
ศึกษาเพิ่มเติมได้ที่
GitHub :: Swift Testing
Getting started
WWDC24 Developer Tools guide
Swift Testing – A New Unit Testing Framework