コードのテスト カバレッジをテストから分離
コードベースをクリーンにするためにテスト ファイルを個別に編成し、テストをパブリック 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 サイトの他の関連記事を参照してください。