データベースにたくさんのjava.sql.Connection
を使用するJavaアプリケーションがあります。テスト用に確定的にDBを失敗させる
データベースが利用できない場合、私のサービスは適切なエラーコード(HTTP 500と503などの一時的な問題と永続的な問題を区別する)を返します。
私のアプリケーションは、組み込みのローカルメモリ内のh2データベースに接続します。アプリケーションがこれを認識していない、私の統合テストのみです。
データベースへの書き込みを決定的に失敗させる方法を教えてください。コミットしてカスタムをスローするようにしますSQLException
?私は、すべての接続に影響を与え、私のアプリケーションが再接続ロジックを実行するように、グローバルな「データベースが利用できません」ブール値をテストコードに入れたいと思います。
(私はConnection
をプロキシとcommit()
でif(failFlag) throw new MySimulateFailureException()
を置くことによって始めていた。しかし、これはPreparedStatement.executeUpdate()
をキャッチしていませんでした。私はあまりにもPreparedStatement
をプロキシに着手する前に - 方法のその多くを - 私が教えられるしたいと思います!良い方法...)
これは愚かに聞こえるが、なぜデータベースサービスを停止しない場合がありますか?ファイアウォールのポートをブロックしてトラフィックを少し拒否することはできますか? – Serdalis
私は通常上記で概説したプロキシルートに行きます。誰かがより良いアプローチをしているなら、それを聞くことに興味があるでしょう。 – Keppil