VS Code でのフラグを使用した単体テストのデバッグ
Visual Studio Code (VS Code) で単体テストを実行する場合、次のことが必要になる場合があります。追加のフラグを含めます。たとえば、テスト中に発生した特定のエラーを解決するには、フラグ -ldflags "-X google.golang.org/protobuf/reflect/protoregistry.conflictPolicy=warn" を指定する必要があります。
このフラグを設定するにはVS Code では、settings.json の go.testFlags 構成は次のように変更できます:
<code class="json">"go.testFlags": [ "-ldflags", "-X google.golang.org/protobuf/reflect/protoregistry.conflictPolicy=warn" ]</code>
ただし、この構成をテスト エクスプローラーまたはコード レンズ機能と組み合わせて使用すると、依然としてエラー メッセージ パニックが発生する可能性があります。 : proto: 内線番号 1042 はメッセージ google.protobuf.FileOptions にすでに登録されています。
実行テスト構成とデバッグ テスト構成の区別
次の go.testFlags 構成を比較することにより、テストの実行とデバッグを行ったところ、主な違いはフラグ値の形式にあることがわかりました。実行テストの場合、フラグ値は 1 組の二重引用符 (") で囲む必要がありますが、デバッグ テストの場合、フラグ値は一重引用符 (') と二重引用符 (") で囲む必要があります。この違いは、VS Code で使用される基礎となるデバッグ ツールチェーンの制限または要件によるものと考えられます。
推奨構成
実行テスト機能とデバッグ テスト機能の両方に対応するには、シナリオごとに個別の go.testFlags 構成を定義することをお勧めします。実行テストの場合は、次の構成を使用します。
<code class="json">"go.testFlags": [ "-ldflags", "-X google.golang.org/protobuf/reflect/protoregistry.conflictPolicy=warn" ]</code>
デバッグ テストの場合、次の構成を使用します。
<code class="json">"go.testFlags": [ "-ldflags", "'-X google.golang.org/protobuf/reflect/protoregistry.conflictPolicy=warn'" ]</code>
追加のデバッグに関する考慮事項
より複雑なデバッグ シナリオの場合は、dlv デバッガーを使用する必要がある場合があります。 -gcflags="all=-N -l" などの追加フラグを使用してテスト バイナリをコンパイルし、ヘッドレス DLV セッションを開始すると、エディタをデバッグ環境に接続できるようになります。 VS Code の場合、これは、launch.json ファイルを開いて次のようなデバッグ構成を構成することで実現できます:
<code class="json">{ "version": "0.2.0", "configurations": [ { "name": "Debug Test", "type": "go", "request": "attach", "mode": "remote", "port": 2345, "host": "127.0.0.1", "showLog": true, "trace": "log" } ] }</code>
この構成により、VS Code のデバッグ パネルを介してシームレスなデバッグが可能になります。
以上がVS Code で単体テストの実行とデバッグの両方のために「go.testFlags」を構成するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。