>  기사  >  백엔드 개발  >  내보내지 않은 함수를 사용하여 Go에서 가져온 패키지의 테스트 코드를 재사용하는 방법은 무엇입니까?

내보내지 않은 함수를 사용하여 Go에서 가져온 패키지의 테스트 코드를 재사용하는 방법은 무엇입니까?

Patricia Arquette
Patricia Arquette원래의
2024-11-04 03:48:29806검색

How to Reuse Test Code from Imported Packages in Go with Unexported Functions?

Go에서 가져온 패키지의 테스트 코드 재사용

디렉토리 구조에서 원하는 테스트 유틸리티 함수가 pkg1_test.go에 있습니다. pkg1을 가져오는 main_test.go에서 사용합니다. 그러나 pkg1_test.go의 함수는 pkg1에서 내보내지 않은 함수를 사용하므로 패키지 외부에서는 사용할 수 없습니다.

다음 접근 방식을 고려하세요.

함수를 pkg1.go로 이동

함수를 pkg1.go로 이동하면 main_test.go에서 액세스할 수 있지만 go 빌드로 생성된 바이너리에 함수가 포함될 수 있습니다. 이는 테스트 전용 함수에는 바람직하지 않습니다.

별도의 테스트 유틸리티 패키지 생성

함수를 별도의 테스트 유틸리티 패키지로 이동하고 *_test에서 수동으로 가져옵니다. go 파일이 이상적인 것 같습니다. 그러나 함수를 사용하려면 여전히 내보낼 수 없는 pkg1의 내부 메서드에 액세스해야 합니다.

하이브리드 접근 방식

특정 시나리오의 경우 하이브리드 접근 방식은 다음을 제공합니다. 해결 방법:

  1. pkg1_test.go에서 테스트 유틸리티 기능을 새 패키지로 이동하고 testutils라고 부르겠습니다.
  2. main_test.go 및 pkg1_test.go 모두에서 testutil을 가져옵니다.
  3. pkg1_test.go에서 다음과 같은 기능을 추가합니다.

    <code class="go">func getPrivateData() []byte {
        // Code to get internal data from pkg1
    }</code>
  4. testutils에서 pkg1_test.go의 getPrivateData에서 개인 데이터를 로드하고 이를 사용하여 필요한 작업을 수행합니다.

이 접근 방식을 사용하면 테스트 유틸리티 기능을 프로덕션 코드와 별도로 유지하고 내보내지 않은 기능 문제를 방지하면서 테스트 유틸리티 기능을 재사용할 수 있습니다.

위 내용은 내보내지 않은 함수를 사용하여 Go에서 가져온 패키지의 테스트 코드를 재사용하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

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