run-acceptance-tests について
Go で書かれた Terraform Provider の受け入れテストを安全に実行し、診断するスキルです。認証情報、テスト用環境変数、デバッグ方法、実インフラの後処理を説明します。
主な機能
- 01対象を絞った TestAcc の実行
- 02認証情報とテスト環境変数の確認
- 03再実行とログによる段階的な診断
- 04意図的な失敗によるテスト検証
- 05中断後のリソースクリーンアップへの対応
活用シーン
- 01テストアカウントでの Provider 受け入れテスト実行
- 02失敗またはキャッシュの可能性があるテストの調査
- 03受け入れテストの回帰検出能力の確認
インストール
コマンドをコピーしてターミナルで実行します。
npx skills add https:/ / github.com/ hashicorp/ agent-skills --skill run-acceptance-testsインストール後、Claude Code で/run-acceptance-testsを入力して読み込まれたか確認します。
詳細
受け入れテストは、TestAcc をプレフィックスとする Go のテスト関数です。
実行前:受け入れテストは、プロバイダーのライブ API に対して実際のインフラストラクチャを作成するため、費用が発生する可能性があります。続行する前に、設定済みの認証情報がテストアカウントを指していることを確認してください。
TestAccFeatureHappyPath という名前の受け入れテストを絞り込んで実行するには、次の手順に従います。
-
次の環境変数を指定して、
go test -run=TestAccFeatureHappyPath -timeout 60mを実行します。TF_ACC=1
テスト出力は、デフォルトで非詳細モードにしてください。必ず明示的に
-timeoutを指定します。go testはデフォルトで、実行中のテストを10分後に強制終了します。受け入れテストは、通常この時間を超えるためです。 -
特定のプロバイダーでは、受け入れテストに追加の環境変数が必要な場合があります。必要な変数を確認するには、次の手順に従います。
- テストの
PreCheck/testAccPreCheck関数を読み、テストファイル内を検索します:grep -rn "os.Getenv" --include="*_test.go"。 - テストの設定方法について、リポジトリの README、CONTRIBUTING、または
.env.exampleに説明がないか確認します。 - プロバイダーの
Configureメソッドで、認証情報の解決方法を確認できます。認証情報プロバイダーチェーンを理解するには、provider-configurationスキル(利用可能な場合)を使用します。
変数はシェルプロファイルにエクスポートするのではなく、単一のテスト呼び出しに設定します(
EXAMPLE_API_KEY=... TF_ACC=1 go test ...)。また、リポジトリ内のファイルにシークレット値を絶対に書き込まないでください。 - テストの
失敗した受け入れテストを診断するには、次のオプションを順番に使用します。これらのオプションは累積的です。各オプションには、それより前のすべてのオプションが含まれます。
- テストを再度実行します。
go testがキャッシュ済みの結果を使用しないように、-count=1オプションを使用します。 - 詳細な
go test出力を有効にします。-vオプションを使用します。 - デバッグレベルのログを有効にします。環境変数
TF_LOG=debugを設定します。 - 受け入れテストの Terraform ワークスペースを保持するよう提案します。環境変数
TF_ACC_WORKING_DIR_PERSIST=1を設定して保持を有効にします。
受け入れテストが成功しても、誤検知の可能性があります。TestAccFeatureHappyPath という名前の受け入れテストが正しく機能しているか確認するには、次の手順で「反転」テストを行います。
TestCase内のTestStepsのいずれかにあるTestCheckFuncsの値を編集します。- 受け入れテストを実行します。テストが失敗することを確認してください。
- テストが失敗した場合は、編集を元に戻し、反転テストに成功したと報告します。それ以外の場合は、編集を残し、反転テストに失敗したと報告します。
テストの実行が中断されると、実際のリソースが残る場合があります。プロバイダーにスイーパーが登録されている場合は実行してください(利用可能であれば、provider-test-patterns スキルのスイーパーに関する説明を参照してください)。テストの作成や再構成には、provider-test-patterns スキルを使用してください。