ホームページ >バックエンド開発 >Golang >Go でテストから分離されたコードのテスト カバレッジを達成するにはどうすればよいですか?

Go でテストから分離されたコードのテスト カバレッジを達成するにはどうすればよいですか?

Mary-Kate Olsen
Mary-Kate Olsenオリジナル
2024-10-29 20:56:29526ブラウズ

How to Achieve Test Coverage for Code Separated from Tests in Go?

コードのテスト カバレッジをテストから分離

コードベースをクリーンにするためにテスト ファイルを個別に編成し、テストをパブリック API インタラクションに限定するという利点があるにもかかわらず、テスト対象のターゲット パッケージ (この場合は api_client) のカバレッジを取得する際に課題が生じます。

この問題に対処するには、テストの実行時にパッケージ名とともに -coverpkg フラグを利用できます。

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

このコマンドは、api_client パッケージのカバレッジを有効にしてテストを実行します。

テスト ファイルをコード ファイルから分離することは許容されますが、それは Go の標準的なアプローチから逸脱していることに注意することが重要です。これは、パッケージのプライベート変数や関数が、別のディレクトリにある場合でも、パッケージ外のテストからはアクセスできないことを意味します。

テストがパブリック API メソッドのみにアクセスする必要があるブラックボックス テストを強制するには、次のようにします。ファイルを物理的に移動しなくても、テストを別のパッケージに保存できます。例:

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

// Private variable not accessible outside package
var privateVar = 10

func PublicMethod() {}</code>
<code class="go">// api_client_test.go
package api_client_tests

import (
    "testing"

    "api_client" // Import api_client package
)

func TestPublicMethod(t *testing.T) {
    api_client.PublicMethod()
}</code>

この例では、api_client.go の privateVar および Method 関数はテスト ファイルにアクセスできないため、テストはパブリック API 経由でのみ対話することが保証されます。

以上がGo でテストから分離されたコードのテスト カバレッジを達成するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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