ใน JUnit 5 นั้นได้เพิ่มความสามารถมากมาย
ช่วยทำให้การเขียนชุดทดสอบด้วยภาษา Java ง่ายขึ้นเยอะ
จึงทำการสรุปความสามารถที่น่าสนใจไว้นิดหน่อย
ที่น่าจะใช้งานกันเยอะ ประกอบไปด้วย
- @DisplayName
- @Disabled
- @Nested หรือ Nested test
- @Tag
- @ParameterizedTest
- Assertion
มาดูรายละเอียดเรื่องกัน
เรื่องที่ 1 Display Name
ใช้สำหรับการตั้งชื่อของ test case ผ่าน anotation ชื่อว่า @DisplayName
ช่วยทำให้เราสามารถตั้งชื่อ test case ได้ง่ายและสะดวก
รวมทั้งสามารถเขียนอธิบายในรูปแบบของการเล่า
และอธิบายเรื่องราวของ test case นั้น ๆ ได้ชัดเจนมากยิ่งขึ้น
สุดท้ายชื่อ test case ในส่วนนี้
จะแสดงผลในส่วนของ test report อีกด้วย
อีกอย่างสามารถใส่พวก space bar, emoji และ สัญลักษ์ต่าง ๆ ได้
เรื่องที่ 2 Disable Test
คือการใส่ annotation ชื่อว่า @Disabled
สำหรับการบอกว่า ไม่ทำการทดสอบ
ใส่ได้ทั้งระดับ class (test suite) และ method (test case) ได้เลย
ที่สำคัญ สามารถใส่เหตุผลของการใส่ Disable ได้อีกด้วย
ทำให้ทีมเข้าใจว่าทำไมถึง disable !!
ตัวอย่างการใช้งาน
[gist id="8fa73bcb1afa7b2c16d47eb17ade33e5" file="1.java"]เรื่องที่ 3 Nested test
Nested test/class หรือ inner class นั้น
ช่วยให้เราสามารถจัดกลุ่มของ test class ที่เกี่ยวข้องกันอยู่ด้วยกัน
ทำให้ทำความเข้าใจกับชุดการทดสอบได้ง่ายขึ้น
โดยใช้งานผ่าน annotation ชื่อว่า @Nested
Nested test สามารถเข้าถึงตัวแปรระดับ class จาก class หลักได้
นั่นคือการ share data ระหว่างกัน
เรื่องที่ 4 Tag
Tag นั้นสร้างมาเพื่อแทนที่ Category ใน JUnit 4
เพื่อทำการแบ่งกลุ่มของการทดสอบ
ทั้งในระดับ class และ method ใช้งานผ่าน annotaion ชื่อว่า @Tag
เรื่องที่ 5 Assertion
Assertion นั้นใช้สำหรับการตรวจสอบว่า
ผลการทำงานเป็นไปตามที่เราคาดหวังหรือไม่
ซึ่งในทุก ๆ test case ต้องมีเสมอ
โดยที่ JUnit 5 นั้นได้ทำการสร้าง assertion ขึ้นมาใหม่
และสามารถใช้งานร่วมกับ Lambda สำหรับ Java 8 ขึ้นไปอีกด้วย
ช่วยปรับปรุงประสิทธิภาพของการทดสอบให้ดีขึ้น
รวมทั้งยังมี assertion ใหม่ ๆ ที่ปรับปรุงมาจาก JUnit 4 เช่น
- assertionThat()
- assertionTimeout()
- assertionTimeoutPreemptively()
- assertThrow()
เรื่องที่ 6 Parameterized test
สำหรับการทดสอบแบบ Data-Driven นั้น
ใน JUnit 5 ได้เปลี่ยนแปลงให้ใช้งานง่ายขึ้นกว่า JUnit 4 มาก
สามารถกำหนดข้อมูลสำหรับการทดสอบในแต่ละ test case ได้เลย
ตัวอย่างการใช้งาน
ลองมาเขียนชุดการทดสอบด้วย JUnit 5 กัน
วันนี้คุณเขียน test แล้วหรือยัง ?