ホームページ >バックエンド開発 >Golang >テストが別のディレクトリにある場合、パッケージのカバレッジ統計を取得するにはどうすればよいですか?

テストが別のディレクトリにある場合、パッケージのカバレッジ統計を取得するにはどうすればよいですか?

Susan Sarandon
Susan Sarandonオリジナル
2024-11-01 03:08:28969ブラウズ

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 を実行すると、UtilityFunction.go ファイルのみがカバーされ、実際の api_client パッケージは除外されます。

解決策:

この問題を解決するには、次のコマンドを使用します:

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 中国語 Web サイトの他の関連記事を参照してください。

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