ホームページ >バックエンド開発 >Golang >Go で外部テストの正確なカバレッジ統計を取得するにはどうすればよいですか?

Go で外部テストの正確なカバレッジ統計を取得するにはどうすればよいですか?

Patricia Arquette
Patricia Arquetteオリジナル
2024-10-27 16:02:29282ブラウズ

 How to Get Accurate Coverage Stats for External Tests in Go?

外部テストのカバレッジ統計

Go では、テスト対象のコードと同じパッケージ内にテストを保持することをお勧めします。ただし、コードベースが多数のテスト ファイルで構成されている場合は、これらのテストを別のパッケージに分離して、よりクリーンな構成にすることをお勧めします。このアプローチでは、テストがパッケージのパブリック API へのアクセスに制限され、より適切な構成とカプセル化が促進されます。

次の構造があるとします:

api_client:
    Client.go
    ArtistService.go

api_client_tests:
    ArtistService.Events_test.go
    ArtistService.Info_test.go
    UtilityFunction.go

Running go test Bandsintown-api/api_client_tests -cover reports 100%

解決策:

パッケージをマージせずにテスト対象の api_client パッケージのカバレッジ統計を取得するには:

go test -cover -coverpkg "api_client" "api_client_tests"

ただし、コード ファイルとテスト ファイルを別のディレクトリに分離することは Go の規約と矛盾することに注意してください。パッケージの外部にはアクセスできないブラックボックス テストが必要な場合は、ファイルを再編成せずにテストを新しいパッケージに移動することを検討してください:

api_client.go:

<code class="go">package api_client

// Only accessible within the package
var privateVar = 10

func Method() {}</code>

api_client_test.go:

<code class="go">package api_client_tests

import "testing"

func TestClient(t *testing.T) {
    Method() // Still accessible from another package
}</code>

以上がGo で外部テストの正確なカバレッジ統計を取得するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。