我有一個Java應用程序,使用大量java.sql.Connection
到數據庫。使數據庫失敗確定測試
我想測試一下,如果數據庫不可用,我的服務會返回相應的錯誤代碼(區分臨時和永久性問題,例如HTTP 500和503)。
爲了測試,我的應用程序連接到嵌入式本地內存中的h2數據庫;應用程序不知道這一點,只有我的集成測試是。
如何確定性地寫入數據庫失敗勾入提交,並讓他們拋出自定義SQLException
?我想要測試代碼中的全局'數據庫不可用'布爾值,它會影響所有連接並使我的應用程序執行其重新連接邏輯。
(我已經通過進行代理Connection
,然後將一個if(failFlag) throw new MySimulateFailureException()
在commit()
開始,但是這並沒有趕上PreparedStatement.executeUpdate()
;之前,我走上代理所述PreparedStatement
太 - 它有很多的方法 - 我想教!更好的方法...)
這聽起來可能很傻,但爲什麼不停止數據庫服務?或者阻止防火牆上的端口來拒絕一點點流量? – Serdalis
我通常使用上面概述的代理路由。如果有人有更好的方法,我會有興趣聽到它。 – Keppil