목차
기본 단위 테스트를 작성하는 방법
테이블 중심 테스트 : 여러 사례를 테스트하는 더 깨끗한 방법
특정 테스트를 실행하고 더 많은 출력을 얻습니다
백엔드 개발 Golang 이동 중 테스트 란 무엇이며 단위 테스트를 어떻게 작성합니까?

이동 중 테스트 란 무엇이며 단위 테스트를 어떻게 작성합니까?

Jun 20, 2025 am 08:41 AM
go 단위 테스트

GO의 단위 테스트는 내장 테스트 패키지를 통해 구현되며 개발자는 이름 지정 사양 만 따라 테스트를 작성하고 실행하면됩니다. 특정 단계는 다음과 같습니다. 1. _test.go로 끝나는 테스트 파일 생성; 2. 테스트로 시작하여 테스트 기능을 작성하십시오. 3. t.errorf ()에 오류를보고합니다. 4. GO 테스트 명령을 사용하여 테스트를 실행하십시오. 5. 테이블 드라이버로 여러 사용 사례를 테스트하십시오. 6. -run 플래그를 사용하여 특정 테스트를 실행하고 -v 플래그를 사용하여 자세한 출력을 얻습니다. 예를 들어, ADD 함수를 테스트 할 때는 Math_test.go에 testAdd 함수를 작성하고 검증을 위해 구조를 통해 여러 입력 및 출력 세트를 정의 할 수 있습니다. 또한 GO Test -Run TestADD를 통해 지정된 테스트를 실행하거나 GO Test -v를 통해 자세한 로그 정보를 볼 수 있습니다.

이동 중 테스트 란 무엇이며 단위 테스트를 어떻게 작성합니까?

GO 테스트는 개발자가 타사 라이브러리가 필요없이 코드와 함께 직접 테스트를 작성하고 실행할 수있는 내장 기능입니다. GO에서의 단위 테스트는 간단합니다. testing 패키지를 사용하고 테스트 기능에 대한 간단한 이름 지정 규칙을 따릅니다.

기본 단위 테스트를 작성하는 방법

이동 중에 단위 테스트를 작성하려면 _test.go 파일에서 함수를 만듭니다. 함수 이름은 Test 로 시작하고 테스트중인 함수 또는 메소드의 이름이이어야합니다.

예를 들어 math.go 라는 파일에서 Add in a add in이라는 함수가있는 경우 math_test.go 라는 파일로 테스트를 작성합니다. 기본 테스트의 방법은 다음과 같습니다.

 패키지 메인

"테스트"가져 오기

func testadd (t *testing.t) {
    결과 : = 추가 (2, 3)
    예상 : = 5

    결과 인 경우! = 예상 {
        T.errorf ( "예상 %d, got %d", 예상, 결과)
    }
}
  • 테스트 파일이 _test.go 에서 끝나십시오
  • testing 패키지를 가져옵니다
  • t.Errorf() (또는 유사한 방법)를 사용하여 실패를보고하십시오

테스트를 실행할 준비가되면 명령 줄을 사용하십시오.

 GO 테스트

모든 것이 지나면 PASS 메시지가 표시됩니다. 무언가가 실패하면 Go는 정확히 어떤 테스트 실패와 그 이유를 보여줍니다.

테이블 중심 테스트 : 여러 사례를 테스트하는 더 깨끗한 방법

GO 개발자는 종종 테이블 중심 테스트를 사용하여 단일 테스트 기능에서 여러 입력 출력 조합을 확인합니다. 이것은 테스트를 간결하고 유지하기 쉽습니다.

다음은 동일한 Add 기능을 사용하는 예입니다.

 func testadd (t *testing.t) {
    테스트 : = [] struct {
        A, B int
        int를 기대하십시오
    } {
        {2, 3, 5},
        {0, 0, 0},
        {-1, 1, 0},
        {100, 200, 300},
    }

    _, tt : = 범위 테스트 {
        결과 : = 추가 (TT.A, TT.B)
        결과가 있다면! = tt.expect {
            t.errorf ( "Add ( %d, %d) : 예상 %d, got %d", tt.a, tt.b, tt.expect, 결과)
        }
    }
}

이 접근법은 다음을 쉽게 할 수 있습니다.

  • 더 많은 테스트 케이스를 빨리 추가하십시오
  • 한눈에 테스트되는 것이 무엇인지 확인하십시오
  • 모든 경우에 동일한 주장 논리를 재사용하십시오

많은 GO 프로젝트는 중복을 줄이고 읽기 성을 향상시키기 때문에이 스타일을 선호합니다.

특정 테스트를 실행하고 더 많은 출력을 얻습니다

테스트가 많고 하나만 실행하려면 -run 플래그를 사용하고 테스트 이름과 일치하는 정규 표현식을 사용할 수 있습니다.

 테스트 -Run TestAdd로 이동하십시오

t.Log() 또는 fmt.Println() 의 로그를 포함하여보다 자세한 출력을 얻으려면 -v 플래그를 추가하십시오.

 GO TEST -V

플래그를 결합 할 수도 있습니다.

 GO TEST -V -RUN TESTADD

이 옵션은 실패 테스트를 디버깅하거나 코드베이스의 특정 부분에서 작업 할 때 편리합니다.


그것이 Go에서 쓰기 및 실행 테스트의 기본입니다. 복잡하지는 않지만 명명 규칙과 테스트 파일을 배치 할 위치와 같이 기억해야 할 작은 규칙이 있습니다.

위 내용은 이동 중 테스트 란 무엇이며 단위 테스트를 어떻게 작성합니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.

핫 AI 도구

Undress AI Tool

Undress AI Tool

무료로 이미지를 벗다

Undresser.AI Undress

Undresser.AI Undress

사실적인 누드 사진을 만들기 위한 AI 기반 앱

AI Clothes Remover

AI Clothes Remover

사진에서 옷을 제거하는 온라인 AI 도구입니다.

Clothoff.io

Clothoff.io

AI 옷 제거제

Video Face Swap

Video Face Swap

완전히 무료인 AI 얼굴 교환 도구를 사용하여 모든 비디오의 얼굴을 쉽게 바꾸세요!

뜨거운 도구

메모장++7.3.1

메모장++7.3.1

사용하기 쉬운 무료 코드 편집기

SublimeText3 중국어 버전

SublimeText3 중국어 버전

중국어 버전, 사용하기 매우 쉽습니다.

스튜디오 13.0.1 보내기

스튜디오 13.0.1 보내기

강력한 PHP 통합 개발 환경

드림위버 CS6

드림위버 CS6

시각적 웹 개발 도구

SublimeText3 Mac 버전

SublimeText3 Mac 버전

신 수준의 코드 편집 소프트웨어(SublimeText3)

뜨거운 주제

로그인하기위한 모범 사례는 무엇입니까? 로그인하기위한 모범 사례는 무엇입니까? Aug 04, 2025 pm 04:48 PM

구조화 된 로깅 사용, 컨텍스트 추가, 로그 레벨 제어, 민감한 데이터를 피하고, 일관된 필드 이름을 사용하고, 올바르게 로깅 오류를 사용하고, 성능을 고려하고, 중앙 모니터링 로그를 모니터링하고 구성을 통합하는 것은 효율적인 로깅을 달성하기위한 모범 사례입니다. 먼저, JSON 형식의 구조화 된 로그 (예 : Uber-Go/Zap 또는 Rs/Zerolog 사용)는 기계 구문 분석 및 ELK, Datadog 및 기타 도구를 통합하는 것을 용이하게합니다. 둘째, ID 및 사용자 ID와 같은 컨텍스트 정보를 요청하여 로그 추적 성이 향상되며 Context.Context 또는 HTTP 미들웨어를 통해 주입 할 수 있습니다. 셋째, 디버그, 정보, 경고, 오류 수준을 합리적으로 사용하고 환경 변수를 통해 작동합니다.

GO 테스트 명령은 무엇에 사용됩니까? GO 테스트 명령은 무엇에 사용됩니까? Aug 03, 2025 pm 02:47 PM

gotestisThestAndardCommandForRunningTestSingo, 자동으로 explateTestSxx (ttesting.t) in_test.gofiles; 1. runallTestSwithGotest

Go 서비스를 우아하게 종료하는 방법? Go 서비스를 우아하게 종료하는 방법? Aug 05, 2025 pm 08:21 PM

useignal.notify () tolistenforsigint/sigtermandtriggershutdown; 2.RunthehttpserverinagoroutineAndBlockuntilasignalisreceived; 3.callserver.shutdown () WithoutToTopaceptingNewRequestSonstoctreme;

유형은 GO에서 인터페이스를 어떻게 구현합니까? 유형은 GO에서 인터페이스를 어떻게 구현합니까? Aug 03, 2025 pm 03:19 PM

ingo, atypeimplessanintersancepplicitly는 exclaration.1. interfacesArestoAtoAtomically interspace 'ssignature -exclity.2.no "keywordisned -ducktypingsiussed —ducktypingsiused

이동 중 XML 데이터를 구문 분석하는 방법 이동 중 XML 데이터를 구문 분석하는 방법 Aug 05, 2025 pm 07:24 PM

XML 데이터를 구문 분석하는 것은 GO에서 매우 간단합니다. 내장 인코딩/XML 패키지 만 사용하십시오. 1. XML 요소 및 XML과 같은 XML 태그가있는 구조를 정의하십시오. "이름"해당 하위 요소, XML : "Contact> 이메일"핸들 중첩, XML : "ID, Attr"는 속성을 읽습니다. 2. XML.UnmarShal을 사용하여 XML 문자열을 구조로 구문 분석하십시오. 3. 파일의 경우 os.open을 사용하여 열고 xml.newdecoder를 통해 해독하는데, 이는 큰 파일의 스트리밍에 적합합니다. 4. 구조에서 중복 요소를 처리 할 때

효과적인 단위 테스트를위한 고급 농담 및 유리한 패턴 효과적인 단위 테스트를위한 고급 농담 및 유리한 패턴 Aug 06, 2025 am 12:23 AM

비교를 피하기 위해 비교를 피하고, spiesteStestinceptions.2.usefaketimers.2.usefaketimers (jest.usefaketimersinjest, vi.usefaketimersinvitest) tocontrolasynchronouslogicinvolvolingetimeous

현재 시간을 이동하는 방법 현재 시간을 이동하는 방법 Aug 06, 2025 am 11:28 AM

usetime.now () togetTheCurrentLocalTimeAsAtime.TimeObject; 2.formatTheMateSingTheformatMethodwithLayoutslike "2006-01-0215 : 04:05 "; 3. getUtcTimeByCallingUtc () ontheresultoftime.now (); 4. ExtractComponents -likeear, 월, dayusingMethodsSuchasyear (), m

GO에서 데이터를 스트리밍하는 방법? GO에서 데이터를 스트리밍하는 방법? Aug 03, 2025 am 11:30 AM

IO.Reader 및 IO.Writer를 사용하여 메모리 오버플로를 피하기 위해 데이터를 효율적으로 스트리밍하십시오. io.copy를 사용하여 파일, HTTP 또는 네트워크 데이터의 차단 된 전송을 실현합니다. Goroutines와 채널을 사용하여 대형 로그 파일을 라인별로 읽는 것과 같은 처리 파이프 라인을 구축하십시오. io.pipe를 사용하여 Goroutines간에 데이터를 안전하게 전송합니다. 모든 데이터를 한 번에로드하지 않도록 항상 블록으로 읽고 쓰고 메모리를 제어 할 수 있는지 확인하십시오.

See all articles