我有一个 Java 应用程序,它使用了很多java.sql.Connection
到数据库。
我想测试一下,如果数据库不可用,我的服务会返回适当的错误代码(区分临时问题和永久问题,例如 HTTP 500 和 503)。
为了进行测试,我的应用程序连接到嵌入式、本地、内存中的 h2 数据库;应用程序不知道这一点,只有我的集成测试知道。
如何使对数据库的写入确定性失败,例如挂钩提交并让他们抛出自定义SQLException
?我希望测试代码中有一个全局“数据库不可用”布尔值,该布尔值会影响所有连接并使我的应用程序执行其重新连接逻辑。
(I had started by proxying Connection
and putting an if(failFlag) throw new MySimulateFailureException()
in commit()
; but this didn't catch PreparedStatement.executeUpdate()
; before I embark on proxying the PreparedStatement
too - its a lot of methods! - I'd like to be taught a better way...)
我认为这是一个很好的选择aspects http://en.wikipedia.org/wiki/Aspect-oriented_programming。与例如。Spring http://static.springsource.org/spring/docs/3.0.x/reference/aop.html切入整个包或只是您希望失败的某些方法是非常容易的 - 特别是您可以有一个before
建议总是抛出一个ConnectException
或者做一些更高级的事情around
advice.
Cheers,
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)