9장 테스트와 벤치마킹
단위테스트
- 파일 이름이
_test.go
으로 끝나야 함 - 패키지 이름도
_test
으로 끝나게 할 수 있는데 이 경우 같은 디렉토리 안에 있더라도 외부로 공개되는 필드, 함수만 접근 가능 go test
명령어로 테스트testing
패키지로 결과 출력 및 보고- 테스트 함수는 반드시 외부로 공개되어야하고 이름이 Test로 시작해야하고
*testing.T
을 매개변수로 받아야하고 아무것도 리턴하면 안됨. - 모든 테스트는 먼저 이 테스트가 무엇이고 왜 필요한지 서술해야하고 그 결과를 출력해야함.
- 서술한 뒤에 중괄호로 스코프를 치는듯?
t.Log
: 테스트를 서술할 때와 성공했을 때 사용.-v
옵션을 넣지 않으면 보이지 않음.t.Fatal
: 테스트에 실패했을 때 사용. 테스트 함수 실행 중지t.Error
: 테스트에 실패했을 때 싸용. 테스트 함수를 중지하지않고 마저 실행함
mocking
http 요청의 경우 httptest
패키지로 mocking
NewServer
으로 직접 mock server를 구성하는 방법NewRecorder
로 특정 endpoint에 대한 mocking을 하는 방법
예제 코드
godoc
에서 예제코드를 보여주기위해 코드를 작성하는 방법- 함수 이름은 무조건
Example{예제를 작성하려는 함수의 이름}
이 되어야 함 - 그 외에 파일 이름이나 패키지 이름 등 다른 모든 것은 일반적인 테스트와 동일
Output:
같은 마커를 comment로 붙여서 예상 결과값을 보여줄 수도 있음
벤치마킹
- 작성한 코드의 성능을 측정하는 방법
go test -run="none" -bench="{벤치마크 함수 이름, 패키지, 경로 등}"
*testing.B
를 패러미터로 가지고 함수 이름은Benchmark{벤치마킹하려는 함수의 이름}
이 되어야함- 그 외에 파일 이름이나 패키지 이름 등 다른 모든 것은 일반적인 테스트와 동일
- 반드시 일정 시간동안 반복해서 코드를 실행해야함
- 일반적으로 for 루프를 사용하고 횟수는
b.N
값 사용 - 일반적으로 최소 1초동안 벤치마크 함수를 반복해서 호출함
- 일반적으로 for 루프를 사용하고 횟수는