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

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

Mary-Kate Olsen
リリース: 2024-10-29 20:56:29
オリジナル
480 人が閲覧しました

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

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート