이번 편의 목표: 연체료가 0일과 3일에서 기대한 금액인지 go test로 확인합니다.

테스트 파일 이름은 _test.go로 끝납니다. testing 패키지의 *testing.T로 실패를 알립니다. 기대와 다르면 Fatalf가 그 테스트를 실패로 끝냅니다. 11편의 book/fee.go는 그대로 둡니다.

book/fee_test.go를 추가합니다.

Go
package book

import "testing"

func TestZeroDaysIsFree(t *testing.T) {
	if OverdueFee(0) != 0 {
		t.Fatalf("0일 연체료가 0이 아닙니다")
	}
}

func TestThreeDays(t *testing.T) {
	if OverdueFee(3) != 300 {
		t.Fatalf("3일 연체료가 300이 아닙니다")
	}
}

모듈 폴더에서 다음을 실행합니다.

go test ./book

두 테스트가 PASS이면 함수가 두 경우를 만족한 것입니다. 테스트 패키지를 book으로 두면 같은 폴더의 OverdueFee를 그대로 부릅니다. go run . 은 테스트 파일을 실행 파일에 넣지 않습니다.

직접 해 보기

OverdueFee(-2)가 0인지 보는 테스트를 하나 추가하고 go test ./book 을 다시 실행하세요.

해설

함수는 0 이하를 모두 0으로 돌립니다. -2도 0이므로 새 테스트는 통과합니다. 기댓값을 100으로 적으면 FAIL과 적어 둔 문구가 출력됩니다.