> 백엔드 개발 > Golang > Golang의 테스트 사용법에 대한 심층 소개

Golang의 테스트 사용법에 대한 심층 소개

PHPz
풀어 주다: 2023-04-11 10:10:44
원래의
1681명이 탐색했습니다.

Golang은 효율성, 단순성, 강력한 동시성 지원과 같은 많은 매력적인 기능을 갖춘 현대적인 프로그래밍 언어입니다. Golang의 테스트 도구도 매우 강력합니다. 이 기사에서는 Golang의 테스트 사용법을 심층적으로 소개합니다.

Golang에서는 테스트 코드와 테스트 중인 코드가 분리되어 있습니다. 이는 테스트 코드와 프로덕션 코드의 혼동을 방지하고 테스트 코드를 더 쉽게 작성하고 유지 관리할 수 있도록 하기 위한 것입니다. 테스트 코드는 _test.go로 끝나는 별도의 파일에 배치됩니다. 이는 테스트 코드가 프로덕션 코드의 모든 것을 사용하고 액세스할 수 있지만 프로덕션 코드는 테스트 코드의 어떤 것도 사용할 수 없음을 의미합니다.

Golang에서는 테스트가 단위 테스트와 통합 테스트라는 두 가지 형태로 이루어집니다. 단위 테스트는 기능이나 방법을 테스트하는 데 사용되는 반면 통합 테스트는 시스템의 여러 구성 요소 간의 올바른 상호 작용을 테스트하는 데 사용됩니다.

먼저 단위 테스트의 사용법을 살펴보겠습니다. 다음은 간단한 추가 함수에 대한 테스트 코드입니다.

package main

import "testing"

func TestAdd(t *testing.T) {
    input1 := 1
    input2 := 2
    expected := 3
    result := Add(input1, input2)
    if result != expected {
        t.Errorf("Add(%d, %d) = %d; want %d", input1, input2, result, expected)
    }
}
로그인 후 복사

테스트 함수는 Test로 시작하고 그 뒤에 테스트 함수 이름이 와야 합니다. 테스트 함수의 매개변수는 t *testing.T이며, 이는 테스트 함수의 통과 또는 실패 여부를 확인하는 데 사용할 수 있습니다. 이 예에서 테스트 함수는 Add 함수가 1과 2의 합을 올바르게 계산하는지 확인하고 결과가 3이 아닌 경우 오류 메시지를 인쇄합니다.

go test 명령이 실행되면 TestAdd 함수가 자동으로 실행되어 결과가 출력됩니다. 함수가 테스트를 성공적으로 통과하면 출력이 없으며, 그렇지 않으면 아래와 같이 오류 메시지가 출력됩니다.

--- FAIL: TestAdd (0.00s)
    main_test.go:10: Add(1, 2) = 4; want 3
로그인 후 복사

다음으로 통합 테스트의 사용법을 살펴보겠습니다. 다음은 간단한 웹 애플리케이션에 대한 테스트 코드입니다.

package main

import (
    "net/http"
    "net/http/httptest"
    "testing"
)

func TestIndexHandler(t *testing.T) {
    req, err := http.NewRequest("GET", "/", nil)
    if err != nil {
        t.Fatal(err)
    }

    rr := httptest.NewRecorder()
    handler := http.HandlerFunc(IndexHandler)

    handler.ServeHTTP(rr, req)

    if rr.Code != http.StatusOK {
        t.Errorf("handler returned wrong status code: got %v want %v",
            rr.Code, http.StatusOK)
    }

    expected := "Hello, world!"
    if rr.Body.String() != expected {
        t.Errorf("handler returned unexpected body: got %v want %v",
            rr.Body.String(), expected)
    }
}
로그인 후 복사

이 예에서는 HTTP 요청을 생성하고 httptest.NewRecorder() 함수를 사용하여 응답 레코더를 생성합니다. 그런 다음 http.HandlerFunc 함수를 사용하여 핸들러를 생성하고 요청 및 응답 로거를 핸들러에 전달합니다. 마지막으로 응답의 상태 코드와 본문 내용이 올바른지 확인합니다.

go test 명령이 실행되면 테스트 코드가 웹 애플리케이션을 시작하고 테스트를 실행합니다. 테스트가 성공적으로 통과하면 출력이 없으며, 그렇지 않으면 오류 메시지가 출력됩니다.

요약하자면 Golang의 테스트 도구는 매우 강력하고 사용하기 쉽습니다. 이를 통해 신뢰할 수 있는 소프트웨어를 작성하고 테스트 코드를 쉽게 유지 관리하고 업데이트할 수 있습니다. 단위 테스트이든 통합 테스트이든 Golang의 테스트 도구는 코드의 정확성을 보장하는 간단하고 효과적인 방법을 제공하므로 Golang 코드를 작성할 때 자주 사용해야 합니다.

위 내용은 Golang의 테스트 사용법에 대한 심층 소개의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿