Go 언어 테스트하기

고(Golang) test 파일 작성 기초

golang

4/11/2024

고 언어(Golang)에서 테스트하는 방법 기초입니다.


간단한 평균 구하기 함수 작성

테스트를 하기 위해 우선 간단한 평균값 구하기 함수를 작성합니다. 점수를 모아 놓은 슬라이스를 인자로 넣으면 그 평균값을 리턴하는 함수입니다. 'learn'이라는 폴더 안에서 main.go 파일에 작성합니다.


package main

import (
	"fmt"
)

func average(subjects []float64) float64 {
	m := 0.0

	for _, s := range subjects {
		m += s
	}
	return m / float64(len(subjects))
}

func main() {
	s := []float64{90, 100, 80}
	fmt.Println(average(s))
}

90

mod 생성

테스트를 하려면 모듈 파일 mod가 있어야 합니다. 그렇지 않으면 다음과 같은 에러 메시지가 출력됩니다.


go: go.mod file not found in current directory or any parent directory; see 'go help modules'

main.go 파일이 있는 현재 디렉터리 내에서 go mod init 내작업이름을 입력합니다. 저는 현재 디렉터리 이름인 'learn'으로 설정했습니다.


> go mod init learn

그러면 다음과 같은 메시지가 출력됩니다.


go: creating new go.mod: module learn
go: to add module requirements and sums:
        go mod tidy

테스트 파일 작성하기

동일한 디렉터리 내에 테스트 파일을 작성합니다. 별도의 디렉터리에 작성하는 편이 좋겠지만, 지금은 기초이므로 편의상 동일한 디렉터리에 작성하겠습니다. 파일명은 learn_test.go입니다.


package main

import "testing"

func TestAverage(t *testing.T) {
	s := []float64{10, 20, 30}
	a := average(s)

	if a != 20 {
		t.Errorf("Expected average of 20, but got %v", a)
	}
}

테스트 파일을 작성한 후, 터미널에서 go test를 입력합니다.


go test 

그러면 테스트를 통과했다는 메시지가 출력됩니다.


PASS
ok      learn   0.603s

일부러 함수에 오류 코드를 만들어 놓으면, 테스트에 실패했다는 메시지가 다음과 같이 출력됩니다.


--- FAIL: TestAverage (0.00s)
    learn_test.go:10: Expected average of 20, but got 180
FAIL
exit status 1
FAIL    learn   0.215s