在junit中有没有办法测试rowlocked异常?
答案 0 :(得分:6)
如果你mock数据库依赖,那么你可以让你的模拟对象抛出锁定的行异常。
由于您已经删除了对数据库的直接依赖性,测试应该运行得更快,并且由于数据库问题(例如数据库不可用或类似问题),您不太容易发生“闪烁测试”。
另外,通过这种方式,您只测试代码,而不是与数据库无关 - 它与实现无关。如果您以后选择更改数据库供应商,那么(a)对您的代码无关紧要,(b)您的测试无关紧要知道它是什么数据库使用
一些示例框架可以帮助您入门:
答案 1 :(得分:5)
这样的事情:
@Test(expected=SQLException.class)
public void testReadLockedRowException() {
...
}
答案 2 :(得分:3)
Georgy是正确的,但在实现中你需要更多:两个客户端来访问数据库。一个用于读取并挂起到该行,另一个用于尝试访问它并生成异常。
答案 3 :(得分:1)
使用模拟对象,从模拟数据库中抛出行锁定异常。
使用真正的数据库: