Go テストを確実に順次実行する方法
Go テストを実行すると、テストが断続的に失敗し、後続の実行でのみ合格することが観察されます。 。この動作は、データベースの初期化の問題が原因であると考えられます。具体的には、DB 内にデータを作成する POST リクエストは、このデータに依存する GET リクエストの前に一貫して実行されません。その結果、空のデータベースに対して GET リクエストを実行すると、失敗します。
テストの実行順序が定義できない理由
Go では、テストの実行順序は保証されません。テストはフラグに基づいてスキップまたは除外される可能性があるため、順次実行を想定することが信頼できなくなります。
順次初期化のソリューション
テストが特定の順序で実行されるようにするには、次のようにします。テストを相互に独立させ、テスト間の依存関係に依存しないようにすることが重要です。ただし、前提条件が必要な場合は、次のオプションを検討できます:
データベース初期化に関する具体的な推奨事項
特定のシナリオでは、データベースがパッケージ init() 内で初期化されているかどうかを確認することをお勧めします。 TestMain() 関数。そうでない場合は、テストを実行する前にテスト レコードを挿入します。
サブテストに関する注意
Go 1.7 で導入されたサブテストにより、単一関数内でテストの実行順序をより詳細に制御できます。 。ただし、この機能は、テスト間に意図しない依存関係が導入されないように注意して使用する必要があります。
以上がデータベースの初期化を扱う際に、Go での連続したテストの実行を保証するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。