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