funcTestFoo(t *testing.T) { // todo test code expected := 1 actual := 0 if result != actual { t.Fatal("기대값과 결과값이 다릅니다.") // t.Error() // t.Fail() // t.Log() } }
go 가 제공하는 기본적인 테스트 방식은 if 문과 testing.T 가 제공하는 오류 함수를 사용하는 것입니다.
테스트 코드의 양에 따라 if 가 난무하는 코드가 될 수 있어 assert 패키지의 도움을 받는것이 좋습니다.
assert 패키지
github.com/stretchr/testify/assert
1 2 3 4 5 6 7 8 9 10
package test
import"testing"
funcTestFoo(t *testing.T) { // todo test code expected := 1 actual := 0 assert.Equal(t, expected, actual, "기대값과 결과값이 다릅니다.") }
이 패키지의 장점은 좀더 시각적인 output을 제공합니다.
1 2 3 4 5 6 7 8 9 10 11 12
$ go test --- FAIL: TestFoo (0.00s) foo_test.go:9: Error Trace: foo_test.go:9 Error: Not equal: expected: 1 actual : 0 Test: TestFoo Messages: 기대값과 결과값이 다릅니다. FAIL exit status 1 FAIL _/D_/repository/foo_test 0.174s
테스트 실행
1 2 3 4 5 6 7 8 9
# 모든 테스트 실행 $ go test
# *_test.go 파일 테스트 실행 # -v : 상세한 결과 확인 $ go test *_test.go -v
# 특정 테스트 함수(TestFunctionName) 실행 $ go test -run TestFunctionName -v