티스토리 뷰
Go 에서는 유닛 테스트를 자체적으로 지원한다. 간단하게 테스트하는 방법을 적어놓는다.
1. 원래 파일
package main
import "fmt"
// test.go
func square(x int) int {
return 81
}
func main() {
fmt.Println(square(9))
}
2. 테스팅 파일
package main
// test_test.go
import (
"testing"
"github.com/stretchr/testify/assert"
)
func TestSquare1(t *testing.T) {
result := square(9)
if result != 81 {
t.Errorf("square 9 is 81 but %d\n", result)
}
}
func TestSquare2(t *testing.T) {
result := square(3)
if result != 9 {
t.Errorf("square 3 is 9 but %d\n", result)
}
}
func TestSquare3(t *testing.T) {
assert := assert.New(t)
assert.Equal(81, square(9), "square 9 is 81")
}
func TestSquare4(t *testing.T) {
assert := assert.New(t)
assert.Equal(9, square(3), "square 3 is 9")
}
형식
1. 테스트하고자 하는 파일이 xxx.go 일 때 테스팅 파일명은 xxx_test.go 이다.
2. testing 패키지 import 해야한다.
3. 테스트코드는 func TestYyy(t *testing.T) 형식이다. (함수명 = Test + 대문자로시작)
외부 테스트 패키지 :
github.com/stretchr/testify
=> 다운 : go get github.com/stretchr/testify
=> module에 알아서 잘 들어가 있음
=> 해당 패키지 자세한 사용은 해당 패키지 문서 참고
https://github.com/stretchr/testify
테스트 방법
1. 터미널 : go test / go test -run 테스트함수명 (특정 테스트함수만 테스트)
2. testing 패키지 사용 시 Error로 처리하면 실행 종료, Fail 로 처리하면 계속 진행
위 테스팅 파일 실행 결과
1. 그냥 위 test_test.go 로 test.go 테스트
TestSquare2 의 경우 기본적인 Errorf 를 사용하였기에 에러 메시지만 보여줌
TestSquare4 의 경우 testify 패키지의 assert를 사용하였기에 예측값과 실제값 등 더 자세히 보여줌
2. test.go에서 Square 리턴 값 x * x 로 변경 후 테스트
'메모' 카테고리의 다른 글
PS Rust 입출력 (0) | 2023.01.09 |
---|---|
Ubuntu Openssl 설치 (0) | 2022.11.20 |
golang 문자열 입출력 공백 포함하기 (0) | 2022.02.15 |
golang 입출력 빠르게 (0) | 2022.02.15 |
Go - slice 기본 내용 정리 (0) | 2022.01.26 |
댓글