統合テストは件数でなく識別子集合で検証し、動的IDで共有コンテナ衝突を避ける
テスト設計
知識
運用
外部ストア(検索エンジン・DB)を使う統合テストで、期待をヒット件数だけで assert すると、別レコードの取り違えや偶然の一致を見逃す。含むべき・含まざるべきレコードの識別子集合で包含・除外を検証する。
加えて、共有 testcontainer を複数テストで使い回すと、固定のインデックス名・レコードIDが衝突し(既存リソース例外など)初回実行が偽陽性で落ちる。レコード識別子は動的(ULID 等)に生成し、テスト間の汚染と名前衝突を避ける。
落とし穴: 初回のコンテナ初期化・インデックス名衝突による失敗を、実装由来の assertion failure と誤認しないこと。失敗原因を「assertion か、基盤(コンテナ/インデックス初期化)か」で切り分けてから再実行する。