전통 테스트 :
기본 패키지 수입 ( " FMT를 " ) addUpper FUNC (N INT ) INT { 입술 : = 0 에 대한 I = 0 ; I <= N; I ++ { 입술 + = I } 리턴 입술 } 의 main () {FUNC 입술 : = addUpper ( 10 ) 의 경우 입술! = 55 { fmt.Printf ( " 错误,真实值%의 V,期望值%의 V " , 입술, 55 ) } 다른 { fmt.Printf을 ( " 올바른 실제 값 : %의 V, 기대 값 : %의 V " , RES, 55 ) } }
문제 : 프로그램이 실행되면, 필요 절차 중단의 주요 기능을 수정할 필요가 (1), (2) 다수의 기능을 테스트하는 단계를 더 복잡;
단위 시험 : (1) 결과가 정확한 동작을 각 기능이 실행되어 있는지 확인하고, (2) 코드를 작성 좋은 성능을 보장하기 위해;
사용에 가서 테스트 패키지 테스트에 TestXxx의 첫 번째 X는 대문자주의 시작 기능.
전체 시험 흐름도 :
특정 카탈로그 :
main.go
기본 패키지
() {FUNC 메인을
}
pro.go
유틸 패키지 addUpper FUNC (N INT ) INT { 입술 : = 0 에 대한 I = 0 ; I <= N; I ++ { 입술 + = I } 리턴 입술 } FUNC 서브 (N1 INT , N2 INT ) INT { 복귀 N1 - N2 }
add_test.go
유틸 패키지 가져 오기 ( " FMT " " 테스트 " ) FUNC TestAddUpper (T * testing.T) { RES : = addUpper ( 10 ) IF ! RES = (55) { // 프로그램 오류 입력 종료 및 출력 로그 t.Fatalf ( " AddUpper (10)를 수행 오류 기대치 = %의 V, 출력값 V의 % = " , 55 , RES) } // 올바른 출력 로그가 있으면 t.Logf ( " AddUpper이 (10)이 올바르게 실행 ... " ) } FUNC TestHello (T * testing.T) { fmt.Println (" 안녕하세요 세계 " ) }
sub_test.go
유틸 패키지 오기 " 테스트 " FUNC TestSub (T * testing.T) { RES : = 하위 ( 20 인 , 10 ) IF ! RES = 10 { // 프로그램 오류 입력을 종료하고, 출력 로그 t.Fatalf ( " 하위 ( 20,10) 실행 오류 기대치 = %의 V, 출력값의 V (%) = " , 10 , RES) } // 경우 정확한 출력 로그 t.Logf ( " 하위 (20,10) ... 적절히 실행 " ) }
최종 결과 :
단위 테스트 참고 :
(1) 테스트 기능해야 TestXxx 명령, 상기 제 1 상부 케이스를 X;
(2) 테스트 케이스 파일 끝을 _test.go해야합니다
(3) TestXxx (t * testing.T) 파라미터 타입 * testing.T 있어야;
(4) 테스트 케이스 파일은 여러 테스트 케이스를 가질 수있다;
(5) 테스트 케이스 명령을 실행합니다
(로그 출력 오류 로그없이 제대로 실행) 테스트를 이동
이동 테스트 -v (올바른 여부, 모든 출력 로그)
에러가 발생하면 (도 6)는 포맷 t.Fatalf 출력에 오류 메시지를 사용하고 프로그램을 종료 할 수있다;
(7) t.logf ()를 출력 할 수있다 해당 로그;
(8) PASS 테스트로 표현 FAIL는 실패를 나타낸다;
(9) 시험 단일 파일 : 이동 테스트 -v add_test.go pro.go
(10) 하나의 시험 방법 : 이동 테스트 -v -test.run TestAddUpper