>  기사  >  백엔드 개발  >  Go의 테스트 파일 외부에서 테스트 함수를 호출할 수 있나요?

Go의 테스트 파일 외부에서 테스트 함수를 호출할 수 있나요?

Patricia Arquette
Patricia Arquette원래의
2024-10-26 06:32:021032검색

Can You Call a Test Function from Outside a Test File in Go?

테스트 파일 외부에서 테스트 함수를 호출할 수 있나요?

Go에서 단위 테스트는 일반적으로 go test를 사용하여 실행됩니다. go test는 다음과 같이 표시된 테스트 함수를 식별하고 실행합니다. test.T 매개변수. 그러나 질문이 생깁니다. 테스트 실행을 시작하기 위해 테스트가 아닌 파일에서 테스트 함수를 호출할 수 있습니까?

답변: 프레임워크 제한

안타깝게도 대답은 '아니오'입니다. Go의 테스트 프레임워크는 테스트 코드와 비테스트 코드를 분리하도록 설계되었습니다. 테스트 함수는 테스트 파일 내에서만 호출해야 하며 테스트 중인 단위는 적절한 패키지에서 가져와야 합니다.

Go의 테스트 패턴

Go는 두 가지 기본 테스트 패턴을 지원합니다.

  • 블랙박스 테스트: 패키지 외부에서 내보낸 기능을 테스트하여 다른 패키지가 해당 기능과 상호 작용하는 방식을 시뮬레이션합니다.
  • 화이트박스 테스트: 패키지 내에서 내보내지 않은 함수를 테스트하여 내부 구현 세부 사항에 대한 액세스를 제공합니다.

실습에 적용

유틸리티 추가 기능과 내보낸 Sum이 있는 example이라는 이름의 예제 패키지를 고려해 보세요. 내부 add 기능을 활용한 함수입니다.

example.go: 내보낸 함수와 내보내지 않은 함수가 포함된 패키지

<code class="go">package example

func Sum(nums ...int) int {
    sum := 0
    for _, num := range nums {
        sum = add(sum, num)
    }
    return sum
}

func add(a, b int) int {
    return a + b
}</code>

example_test.go의 블랙박스 테스트

<code class="go">package example_test

import (
    "testing"

    "example"
)

func TestSum(t *testing.T) {
    tests := []struct {
        nums []int
        sum  int
    }{
        {nums: []int{1, 2, 3}, sum: 6},
        {nums: []int{2, 3, 4}, sum: 9},
    }

    for _, test := range tests {
        s := example.Sum(test.nums...)
        if s != test.sum {
            t.FailNow()
        }
    }
}</code>

example_internal_test.go의 화이트박스 테스트

<code class="go">package example

import "testing"

func TestAdd(t *testing.T) {
    tests := []struct {
        a   int
        b   int
        sum int
    }{
        {a: 1, b: 2, sum: 3},
        {a: 3, b: 4, sum: 7},
    }

    for _, test := range tests {
        s := add(test.a, test.b)
        if s != test.sum {
            t.FailNow()
        }
    }
}</code>

결론적으로, 테스트 코드와 비테스트 코드를 분리하도록 설계되었기 때문에 테스트 파일 외부에서 테스트 함수를 호출하는 것은 불가능합니다. 이동 중. 단위 테스트는 항상 go test 명령을 통해 실행되어야 하며, 이를 통해 문제를 분리하고 의도하지 않은 코드 실행을 방지할 수 있습니다.

위 내용은 Go의 테스트 파일 외부에서 테스트 함수를 호출할 수 있나요?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

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