ใน 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  !!

ตัวอย่างการใช้งาน 

เรื่องที่ 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 แล้วหรือยัง ?