ปกติเขียน test ในภาษาโปรแกรมบน JVM ก็มี library/framework ให้เลือกเยอะ
ทั้ง JUnit, Spock, Spek, Kotlin test
แต่มีอีกตัวที่น่าสนใจคือ Kotest
(ก่อนหน้านี้จะใช้ชื่อว่า KotlinTest แต่ไปซ้ำกับ test ที่มากับภาษา Kotlin จึงเปลี่ยนชื่อ)
โดยมีความสามารถที่น่าสนใจมาก ๆ รวมทั้งเขียนง่ายด้วย
ดังนั้นมาลองทำความรู้จักกันหน่อย
Kotest เป็น test framework ที่จบในตัว
มีรูปแบบการเขียนที่หลากหลาย ด้วย DSL ที่เข้าใจง่าย
มี matcher มาให้มากกว่า 300 แบบ
มี property-based testing ให้มาเลย
ด้านหลังก็คือ JUnit 5 นั่นเอง รวมทั้งมีเพื่อน ๆ มาอีกเพียบ !!!
เริ่มการใช้งานด้วยเพิ่ม library เข้ามายัง project
โดยตัวอย่างจะเป็น Gradle project
[gist id="492ff8b4e7fcbe724df2baf745a09d72" file="build.gradle"]รูปแบบของการเขียน test เยอะมาก ๆ (Test Style)
ประกอบไปด้วย
- String spec
- Fun spec
- Should spec
- Word spec
- Feature spec (Feature และ Scenario เหมือนกับ cucumber)
- Behavior spec (BDD Style)
- Free spec
- Describe spec (มาจาก Spec หรือพวก Jasmine)
- Expect spec
- Annotation spec
เลือกได้ตามความชอบเลยครับ !!
ยกตัวอย่างเช่น StringSpec อ่านง่ายดีนะ
ต่อมามี Matcher หรือรูปแบบการตรวจสอบผลการทำงาน
มีให้ใช้งานมากกว่า 300 แบบเป้าหมายเพื่อให้ง่ายต่อการใช้งาน รวมทั้งอ่านง่ายและยืดหยุ่นสูง
ทดสอบแบบ Data-Driven Testing แบบง่าย ๆ
ยกตัวอย่างเช่น
[gist id="492ff8b4e7fcbe724df2baf745a09d72" file="2.kt"]สนับสนุน Property-based testing
นั่นคือ จะทำการ generate test data ให้เองเลยยกตัวอย่างเช่น
[gist id="492ff8b4e7fcbe724df2baf745a09d72" file="3.kt"]นี่คือ ความสามารถพื้นฐานของ Kotest
น่าจะเป็นอีกหนึ่งทางเลือกของการเขียน test ด้วยภาษา Kotlin
ขอให้สนุกกับการ coding ครับ