如何在junit中测试行锁定异常
junit 有没有办法测试 rowlocked 异常?
Is there a way in junit to test rowlocked exception?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
junit 有没有办法测试 rowlocked 异常?
Is there a way in junit to test rowlocked exception?
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
接受
或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
发布评论
评论(4)
如果您模拟数据库依赖项,那么您可以让模拟对象抛出锁定行异常。
由于您将消除对数据库的直接依赖,因此测试应该运行得更快,并且您将不太容易因数据库问题(例如数据库不可用或类似问题)而出现“闪烁测试”。
另外,这样,您只需测试代码,与数据库无关 - 它与实现无关。如果您选择将来更改数据库供应商,则此(a)对您的代码来说应该无关紧要,并且(b)您的测试并不关心它是什么数据库使用。
一些帮助您入门的模拟框架示例:
If you mock your database dependencies, then you can have your mock object throw the locked row exception.
As you'll have removed your direct dependency on the database, the test should run faster, and you'd be less prone to "flickering tests" due to database problems such as the database not being a available or something similar.
Also, this way, you are only testing your code, and nothing to do with the database - it is implementation agnostic. Should you choose to change database vendor in the future, this (a) shouldn't matter to your code and (b) your test doesn't care what database it is using.
Some example mocking frameworks to get you started:
像这样的事情:
Something like this:
Georgy 是正确的,但在实现中您需要更多:两个客户端来访问数据库。一个用于读取并挂起该行,另一个用于尝试访问它并生成异常。
Georgy is correct, but you'll need more in the implementation: two clients to access the database. One to read and hang onto the row, another to try and access it and generate the exception.
使用模拟对象,从模拟数据库抛出行锁定异常。
使用真实数据库:
With mock objects, throw row locked exception from your mock DB.
With a real DB: