[Golang] Unit test

Visarut Junsone
Lazy-Dev
Published in
1 min readFeb 3, 2019

เมื่อพูดถึงการเขียนโปรแกรมก็ต้องมีขั้นตอนการทดสอบโปรแกรมก่อนที่จะถูกส่งออกไปให้ผู้ใช้ ใช้ได้อย่างมีประสิทธิภาพ ในกระบวนการนี้ในแต่ละบริษัทก็จะมี Tester, QA อื่นๆ ที่จะทำหน้าที่ทดสอบโปรแกรมที่ถูกสร้างขึ้นมา

แต่!!!!

นั้นไม่ได้หมายความว่าตัว Developer หรือ Programmer จะไม่ทดสอบโปรแกรมของตัวเองนะ ว่าทำงานได้จริงหรือเปล่า ในการพัฒนามันก็ต้องมีการเขียนไปทดสอบไปเองด้วย ในระดับหนึ่ง และใน Golang นี้ มีวิธีที่จะช่วยคุณเขียน Unit test อย่างง่ายดายมากๆ แล้ว Unit test คืออะไรละ

Unit test คือ?

Unit test คือการเขียนทดสอบส่วนๆ หนึ่งของโปรแกรม เพื่อทดสอบว่าสามารถทำงานได้อย่างถูกต้อง แต่อย่างไรก็ต้องไอเจ้า Unit test ตัวนี้เนี่ย จะต้องเป็น Developer หรือ Programmer คนใช้นะ เพราะ ในการเขียน Unit test มันก็ต้องมีการ Mock up ค่า ขึ้นมาเพื่อทดสอบ และมันเป็นเพียงแค่การทดสอบจุดเล็กๆ ใน โปรแกรมเท่านั้น

Example

ก่อนอื่นเลือกฟังก์ชั่นที่เราจะทดสอบ ในทีนี้เราก็จะใช้ Code ชุดเดิมจากที่เคยทำอธิบายไว้ใน blog ก่อนๆ <ลิ้งค์ Github>

package apisfunc HelloThere() string {      return "Hello, world!"}

และนี้ก็คือฟังก์ชั่นที่เราเลือกจะทดสอบมัน (ขี้เกียจสร้างฟังก์ชั่นซับซ้อน) และ Code ต่อไปนี้ คือ Code ที่สร้างมาเป็นตัว test

package unittestimport (      "doge-apis/apis"      "testing")func TestHelloThere(t *testing.T) {      test := apis.HelloThere()      if test == "" {            t.Error("Expected Hello, world!")      }}

หลักการก็คือ ต้องสร้างฟังก์ชั่นที่มีคำว่า Test อยู่ด้านหน้าตามด้วยชื่อฟังก์ชั่นที่เราต้องการทดสอบ ตามด้วย parameter -> t *testing.T จากนั้นภายในก็เขียนเรียกฟังก์ชั่นที่เราต้องการทดสอบถ้าเป็นโปรแกรมที่ซับซ้อนอาจจะ Mock up ค่าแล้วส่งเข้าไปทดสอบในฟังก์ชั่น

รูปที่ 1 ตัวอย่างแสดงปู่ม run test

จะเห็นว่าเมื่อพิมพ์ชื่อ function test เป็น format อย่างที่บอกไป จะมีปุ่ม run test ขึ้นมา เมื่อเรากดปุ่ม run test จะได้ผลลัพท์ดังรูปที่ 2

รูปที่ 2 แสดงผลลัพท์การทำ unit test

เห็นไหมครับ ง่ายนิดเดียวกับการทำ Unit test ซึ่งไม่จำเป็นต้องอธิบายเยอะเลยถ้าขี้เกียจก็ Copy paste ไปเลยครับ ฮ่าๆๆ แต่ Developer หรือ Programmer อย่างเราๆ จะ Copy paste อย่างเดียวไม่ได้นะ ต้องเข้าใจ Code ส่วนนั้นด้วย

--

--

Visarut Junsone
Visarut Junsone

Written by Visarut Junsone

I’m Full-Stack Developer. ReactJS Golang C# Javascript C++ PHP and learning a lot more. Not lazy as it name. “Lazy-Dev”