- 프로그래밍은 쉽지 않다. 최고의 프로그래머들도 매번 의도한 대로 완벽하게 프로그램을 짜는 것이 가능하지 않다. 그러므로 테스트가 소프트웨어 개발에 중요한 부분을 차지한다. 우리 코드를 위해 테스트를 짜는 것은 퀄리티를 보장하고 신뢰도를 향상시키는 중요한 방법이다. 고는 테스트를 쉽게 짜기 위한 특별한 프로그램을 포함한다. math 폴더에 math_test.go를 만들어라.
package math
import "testing"
func TestAverage(t *testing.T) {
var v float64
v = Average([]float64{1,2})
if v != 1.5 {
t.Error("Expected 1.5, got ", v)
}
}
go test
$ go test
PASS
ok golang-book/chapter11/math 0.032s
- go test는 현재 돌아가는 폴더에서 어떠한 테스트파일이라도 찾는다. 테스트는 함수가 Test로 시작하고 하나의 인자인 *testing.T를 받는다. 우리는 Average를 테스팅한다. 테스트 함수가 셋업되면 우리는 우리가 테스트할 코드를 사용하여 테스트를 작성한다. 이 경우에 우리는 1과 2의 평균이 1.5인걸 알고 있다. 그래서 우리가 이걸 체크하는 것이다. 여러가지를 복합적으로 테스트하면 좋다. 이럴 경우에는 아래와 같이 할 수 있다.
package math
import "testing"
type testpair struct {
values []float64
average float64
}
var tests = []testpair{
{ []float64{1,2}, 1.5 },
{ []float64{1,1,1,1,1,1}, 1 },
{ []float64{-1,1}, 0 },
}
func TestAverage(t *testing.T) {
for _, pair := range tests {
v := Average(pair.values)
if v != pair.average {
t.Error(
"For", pair.values,
"expected", pair.average,
"got", v,
)
}
}
}
- 이건 매우 일반적인 테스트 셋업 방식이다. 우리는 struct를 사용해서 input과 output을 나타낸다. 우리는 struct의 리스트를 만들고 이걸 반복문을 돌면서 함수를 실행한다.