Go 언어 테스트하기
고(Golang) test 파일 작성 기초
golang4/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