ปัญหา เมื่อทำการแก้ไข production code หรือ test code แล้ว
ต้องทำการ run ชุดการทดสอบเองเสมอ ซึ่งน่าเบื่อมาก ๆ
ดังนั้นจึงอยากให้ทำการทดสอบแบบอัตโนมัติ (Continuous Testing)
เมื่อมีการเปลี่ยนแปลง เหมือนกับพวก JavaScript framework ต่าง ๆ
วิธีการแก้ไข
เมื่อไปดู proposal ที่เปิดมาใจภาษา Go พบว่า
เคยมีคนขอ feature นี้แล้วที่
Proposal: cmd/go : add "go test" with "-watch" argument for automatic reload test
เป็นแนวทางที่น่าสนใจมาก ๆ ชื่อคนขอคุ้น ๆ นะ !!
แต่ว่าก็ตกไป เนื่องจากเรื่องของความซับซ้อน
และเครื่องมือที่ใช้ในการสร้าง feature นี้เยอะเกินไป
รวมทั้งมีปัญหาเรื่องของ portability บน OS ต่าง ๆ นั่นเอง
ดังนั้นให้ไปใช้เครื่องมือตามแต่ละ OS นะ
ยกตัวอย่างเช่น
- Linux ใช้ inotifywait
- Mac ใช้ fswatch
ตัวอย่างการใช้งาน fswatch ดังนี้
[gist id="f33f8e627c64366264334bd86c64d29a" file="run_test.sh"]ให้ทำการ run file ข้างต้นค้างไว้
จากนั้นทำการแก้ไขไฟล์ต่าง ๆ ที่มีนามสกุล *.go
ได้ผลการทำงานเป็นดังนี้
เพียงเท่านี้ก็ใช้งานได้ละ มีสีด้วยนะ
ขอให้สนุกกับการ coding