ホームページ  >  記事  >  バックエンド開発  >  別々のフォルダー間でテストすると、Go コード カバレッジ レポートが 0% と表示されるのはなぜですか?

別々のフォルダー間でテストすると、Go コード カバレッジ レポートが 0% と表示されるのはなぜですか?

Patricia Arquette
Patricia Arquetteオリジナル
2024-11-25 09:55:12602ブラウズ

Why Does My Go Code Coverage Report Show 0% When Testing Across Separate Folders?

別々の Go フォルダーでのコード カバレッジの不一致のデバッグ

Go プロジェクト内の異なるフォルダーでコードの単体テストを行うと、コード カバレッジ レポートの不一致が発生する可能性があります。サブフォルダー内のテストを実行するときにすべてのコードがカバーされると予想されるため、これはイライラする可能性があります。

問題:

サブフォルダー内のスタッフ フォルダーからコードを実行しているにもかかわらず、 Staff_test フォルダーのカバレッジ レポートには、カバーされているステートメントが 0% と表示されます。次のプロジェクト構造が関係しています:

stuff/stuff.go -> package: stuff
test/stuff/stuff_test.go -> package: test

考えられる原因:

コード カバレッジ分析は、デフォルトではテスト対象のパッケージに限定されています。この場合、stuff_test パッケージは、stuff パッケージとは別のフォルダーにあり、これが問題の原因となっています。

解決策:

これを解決するには、次のようにします。 go test 実行時の -coverpkg オプション。このオプションを使用すると、カバレッジ情報を収集するパッケージを指定できます。

go test ./test/... -coverprofile=cover.out -coverpkg ./...

このコマンドは、指定されたパターンに一致するすべてのパッケージにカバレッジ分析を適用します。この場合は、現在のディレクトリとそのサブディレクトリ。

カバレッジ レポートの表示:

テストが完了したら実行すると、go tool cover コマンドを使用してカバレッジ レポートを生成できます。

go tool cover -html=cover.out

このコマンドは、cover.out という名前の HTML レポートを作成します。このレポートを Web ブラウザーで開いて、すべてのカバレッジ情報を表示できます。指定されたパッケージ。

以上が別々のフォルダー間でテストすると、Go コード カバレッジ レポートが 0% と表示されるのはなぜですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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