Screen Shot 2557-07-14 at 10.37.10 PM
วันนี้เห็นมีคน share เรื่องรูปแบบการเขียน unit test
ด้วย JUnit ตามรูปแบบของ RSpec  และ Jasmine
ซึ่งแน่นอนว่ารูปแบบจะอ่านง่ายกว่า JUnit แบบเดิมๆ แน่นอน
เนื่องจากผมเคยเขียน RSpec มาบ้างเล็กน้อย
ดังนั้นเรามาดูกันว่ามันเป็นอย่างไร

ความรู้พื้นฐาน
ในการเขียน unit test รูปแบบใหม่นั้น จะใช้ library ชื่อว่า Oleaster
ซึ่งช่วยทำให้สามารถเขียน unit test ด้วย JUnit
ให้มีรูปแบบเหมือนกับ RSpec และ Jasmine นั่นเอง

โดย library ตัวนี้จะใช้ความสามารถของภาษา Java 8
รวมทั้งเขียนอยู่ในรูปแบบ Labmda expression
จึงได้ code ออกมา ที่ดูสวยงามขึ้น !!!

Software Requirement

  • Java8
  • Apache Maven

ขั้นตอนการใช้งาน

1. สร้าง Maven project โดยไฟล์ pom.xml เป็นดังนี้

คำอธิบาย
สิ่งที่เพิ่มเข้ามาคือ repository ใหม่ เนื่องจาก project ที่เราใช้งานนั้นอยู่ที่ Sonatype
ไม่อยู่ใน repository กลางของ Maven

2. เริ่มต้นการใช้งานด้วยการสร้าง Test ขึ้นมา
ซึ่งจะมีโครงสร้างพื้นฐานดังนี้

คำอธิบาย

  • กำหนดให้ JUnit เข้าทำงานที่คลาส OleasterRunner
  • ส่วน unit test ต่างๆ จะต้องกำหนดไว้ใน constructor ของคลาสทดสอบนั้นๆ
  • โดยเราสามารถใช้งาน describe, it, beforeEach ได้ด้วยการ import จาก com.mscharhag.oleaster.runner.StaticRunnerSupport เนื่องจากมันคือ static method นั่นเอง โดยสามารถเรียกใช้งานตามรูปแบบของ Lambda จึงทำให้เราได้หน้าตาของ unit test ที่พอดูได้ขึ้นมาบ้าง

3.  ทดลองสร้าง unit test ด้วยโจทย์ FizzBuzz  ง่ายๆ ดังนี้

เพียงเท่านี้เราก็สามารถเขียน unit test ด้วย JUnit ตามรูปแบบของ RSpec และ Jasmine ได้แล้ว
ผมคิดว่าแนวทางนี้ น่าจะพอทำให้เห็นว่าภาษา Java สามารถเขียนให้สวยขึ้นได้บ้างนะ
และจะได้ไม่น้อยหน้าภาษาอื่นๆ เสียที

ตัวอย่าง source code อยู่ที่ Github :: Up1 => Jasmine Way

Tags:,