ホームページ > バックエンド開発 > Golang > VS Code で単体テストの実行とデバッグの両方のために「go.testFlags」を構成するにはどうすればよいですか?

VS Code で単体テストの実行とデバッグの両方のために「go.testFlags」を構成するにはどうすればよいですか?

Patricia Arquette
リリース: 2024-10-27 06:32:29
オリジナル
673 人が閲覧しました

How to Configure `go.testFlags` for Both Running and Debugging Unit Tests in VS Code?

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

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