0%

go 테스트 코드 작성 및 테스트 실행

go 에서 테스트코드 작성과 테스트 실행을 간략하게 적어봅니다.

테스트 코드 작성

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
package test

import "testing"

func TestFoo(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"

func TestFoo(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