> 백엔드 개발 > Golang > 테스트가 별도의 디렉터리에 있을 때 패키지에 대한 적용 범위 통계를 어떻게 얻을 수 있습니까?

테스트가 별도의 디렉터리에 있을 때 패키지에 대한 적용 범위 통계를 어떻게 얻을 수 있습니까?

Susan Sarandon
풀어 주다: 2024-11-01 03:08:28
원래의
973명이 탐색했습니다.

How Can I Get Coverage Stats for a Package When Tests Are in a Separate Directory?

별도 패키지의 테스트에 대한 커버리지 통계

코드 파일의 테스트를 여러 패키지로 분리할 때 테스트에 대한 커버리지 통계를 얻는 것이 어려워집니다. 테스트 중인 패키지. 다음 디렉터리 구조를 고려하세요.

api_client:
    Client.go
    ArtistService.go
    ...
api_client_tests:
    ArtistService.Events_test.go
    ArtistService.Info_test.go
    UtilityFunction.go
    ...
로그인 후 복사

go test bandsintown-api/api_client_tests -cover를 실행하면 실제 api_client 패키지는 제외하고 UtilityFunction.go 파일에 대한 적용 범위만 제공됩니다.

해결책:

이 문제를 해결하려면 다음 명령을 사용하십시오.

go test -cover -coverpkg "api_client" "api_client_tests"
로그인 후 복사

이 명령을 사용하면 api_client 패키지에 대해 특별히 활성화된 적용 범위 측정을 사용하여 테스트를 실행할 수 있습니다.

패키지 구조에 대한 참고 사항:

그러나 Go에서는 코드 파일과 테스트를 여러 디렉터리로 분할하는 것이 권장되지 않는다는 점에 주목할 가치가 있습니다. 대신 동일한 패키지 내에 테스트를 유지하면 패키지의 공개 API와의 상호 작용으로 올바르게 제한됩니다.

블랙박스 테스트를 위한 코드 접근성:

목표는 테스트에서 비공개 패키지 수준 변수 및 함수에 액세스할 수 없는 블랙박스 테스트를 수행하는 것입니다. 다음 해결 방법을 사용할 수 있습니다.

<code class="go">// api_client.go
package api_client

// will not be accessible outside of the package
var privateVar = 10

func Method() {
}

// api_client_test.go
package api_client_tests

import "testing"
import "api_client"  // import the package **without** renaming it

func TestBlackBox(t *testing.T) {
    api_client.Method()  // call the method from the "api_client" package
}</code>
로그인 후 복사

이렇게 하면 테스트가 디렉터리를 수정하지 않고도 패키지 수준 항목에 액세스할 수 있습니다. 구조 또는 캡슐화 규칙을 위반합니다.

위 내용은 테스트가 별도의 디렉터리에 있을 때 패키지에 대한 적용 범위 통계를 어떻게 얻을 수 있습니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

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