Testing in Go Language
โกมี testing framework ให้ในตัวโดยมีข้อกำหนดคือ
- ชื่อไฟล์ที่จะทดสอบในแพคเกจนั้นๆ ต้องลงท้ายด้วย
_test.go
เช่น sqrt_test.go - ชื่อฟังก์ชั่นต้องขึ้นต้นด้วย
Test
เช่น func TestSqrt - argument ของฟังก์ชั่นต้องเป็น
t *testing.T
เช่น func TestSqrt(t *testing.T)
ยกตัวอย่างเช่น ผมต้องการจะเทส squareroot ใน package github.com/wingyplus/math โดยชื่อไฟล์จริงจะตั้งชื่อว่า sqrt.go
ขั้นตอนแรกคือสร้าง sqrt_test.go ใน $GOPATH/github.com/wingyplus/math
ต่อมาคือเริ่มเขียนเทสใน sqrt_test.go
package math
import "testing"
func TestSqrt(t *testing.T) {
const in, out = 4, 2
if x := Sqrt(in); x != out {
t.Errorf("Sqrt(%v) = %v, want %v", in, x, out)
}
}
จากในตัวอย่างคือเราต้องการทดสอบฟังก์ชั่น Sqrt โดยใส่ค่าในตัวแปร in และต้องการให้ผลลัพธ์ออกมาเท่ากับตัวแปร out สังเกตได้ว่า การตรวจสอบค่าของ testing framework ใน go จะเป็นการใช้ if
ตรวจสอบผลลัพธ์และสั่งให้ Error เมื่อการทดสอบไม่ตรงกับที่คาดหมายไว้
ถ้าให้ผมเขียนเทียบกับ java จะได้ประมาณเดียวกับ assertEquals เช่น
public class SqrtTest {
@Test
public void testSqrt() {
Assert.assertEquals(2, Math.sqrt(4));
}
}
จากนั้นรันเทสด้วยคำสั่ง go test
$ go test github.com/wingyplus/math
Written by thanabodee Charoenpiriyakij
Related protips
Have a fresh tip? Share with Coderwall community!
Post
Post a tip
Best
#Go
Authors
Related Tags
#go
Sponsored by #native_company# — Learn More
#native_title#
#native_desc#