web-dev-qa-db-ja.com

再テストを強制するか、テストキャッシュを無効にします

問題:

同じgoテストを2回実行すると、2回目の実行はまったく行われません。結果は、最初の実行からキャッシュされたものです。

PASS    
ok      tester/apitests    (cached)

リンク

https://golang.org/cmd/go/#hdr-Testing_flags をチェックしましたが、そのためのcliフラグはありません。

質問:

Goテストでテスト結果をキャッシュせずに常にテストを実行するよう強制する可能性があります。

46
Simon Frey

testing flags docs で説明されているいくつかのオプションがあります。

  • go clean -testcache:すべてのテスト結果を期限切れにします
  • テスト実行でキャッシュ不可フラグを使用します。慣用的な方法は、-count=1を使用することです

ただし、コードまたはテストコードを変更すると、キャッシュされたテスト結果が無効になります(ローカルファイルまたは環境変数を使用する場合にもロジックが拡張されます)。したがって、テストキャッシュを手動で無効にする必要はありません。

82
Marc

GOCACHE=offも言及されています ここ

15
soltysh

これを修正した方法(macOSでVisual Studio Codeを使用しています):

コード>設定>設定

設定ページの右側にある...をクリックします

Open settings.jsonをクリックします

どちらか:

  1. 次のスニペットをsettings.jsonファイルに追加します

    "go.testEnvVars": {
        "GOCACHE": "off"
    }
    
  2. go.testEnvVarsの値を変更して、次を含めます:"GOCACHE": "off"
6
distortedsignal

Go11では、モジュールでGOCACHEを使用してキャッシュを無効にできなかったため、代わりに-count=1を使用しました。

go test -count=1

Go11より前:

GOCACHE=off go test

または、テストキャッシュを消去して、テストを再度実行します。

go clean -testcache && go test 
4